Tạo Stack từ file?
Em chào mọi ng!
Cho em hỏi cách đọc file rồi lưu vào Stack tạo bằng linked list với ạ.
Cho em hỏi 2 vấn đề ạ.
-
Em đọc file thì hàm đọc có tham số là tên file kiểu
string filename
-> chương trình báo lỗi, còn nếu đặt làchar* filename
thì lại được là sao ạ? -
Các bác sửa lỗi giúp e sao để nó hiện ra màn hình sau khi đọc từ file ạ.
Em đội ơn các bác::)))#include
#include
#includeusing namespace std;
struct node{
int data;
node* next;
};struct stack{
node* top;
};//khoi tao
void init(stack s){
s.top = NULL;
}//ktra rong
bool isempty( stack s){
if( s.top == NULL)
return true;
else
return false;
}//tao 1 node
node* makenode( int x){
node *p = new node;if( p == NULL) exit(1); else{ p->data = x; p->next = NULL; } return p;
}
void push(stack s, int x){
node *p = makenode(x);
if( isempty(s))
s.top = p;
else
{
p->next = s.top;
s.top = p;
}
}//ham nhap =>> tao stack
stack newstack( char* filename ){
stack s;
int x;
fstream f;
f.open( filename ,ios::in );
if( f == 0 ){
cout<<“Khong timm thay file!”<<endl;
exit(1);
}
else
{
while( ! f.eof() ){
node *p;
f>>p->data;
p->next = s.top;
s.top = p;
}
}return s;
}
void printout(stack s){
if( ! isempty (s)) { node *p = s.top; while( p != NULL){ cout<<" "<<p->data; p = p->next; } }
}
int main()
{
stack s;
init(s);
isempty(s);
newstack(“lab3_b1.txt”);
printout(s);return 0;
}
Bạn copy error log từ compiler lên để mọi người xem nhé.
Tuy chưa xem lỗi của bạn nhưng khi khởi tạo đối tượng string bạn đã include nó vào chương trình chưa?
Chỉ chứa những hàm xử lý chuỗi. Vậy lớp string nằm ở đâu. Nó ở ngay bên dưới đây
Thêm nữa fstream định nghĩa 2 hàm open(), một nhận kiểu char*, một nhận kiểu string, việc sử dụng string mà không include thư viện có thể là nguyên nhân gây ra lỗi.