01/10/2018, 00:23
Chuyển từ khóa trong 1 file keyword.txt thành một danh sách liên kết
Mọi người giúp em sửa lỗi bài này với ạ. Em compile k được ạ. Em đang học nên còn nhiều cái chưa nắm rõ.
Đề bài:Chuyển các từ khóa trong một File Keyword.txt thành một danh sách liên kết đơn.(các từ cách nhau bởi dấu enter)83 20
#include<iostream>
#include<string.h>
using namespace std;
struct Node{
char Data[30];
struct Node *pNext;
};
typedef struct Node NODE;
struct List{
Node *pHead;
Node *pTail;
};
typedef struct List LIST;
void AddHead(LIST &l, char x[30])
void Init(LIST &l){
l.pHead=l.pTail= NULL;
}
Node *creatNode(char x[30]){
Node *p =new NODE;
if(p==NULL) exit(1);
p->pNext =NULL;
strcpy(p->Data,x);
return p;
}
bool isEmtry(LIST l){
if(l.pHead==NULL) return true;
return false;
}
void addHead(LIST &l, char x[30]){
NODE *p= creatNode(x);
if (isEmtry(l)) l.pHead=l.pTail=p;
else{
p->pNext=l.pHead; //con tro pNext cua p tro toi dia chi cua NODE pHead
l.pHead=p; //Cap nhat cho Node pHead
}
l.pTail->pNext=l.pHead; //khep lai vong
}
void xuat(LIST &l){
if (l.pHead){
cout<<"
Danh sach cac phan tu cua:
";
NODE *p=l.pHead;
do{
cout<<" "<<p->Data;
p=p->pNext;
}while(p!=l.pHead);
cout<<"
";
}
else cout<<"
Danh sach rong";
}
int main(){
LIST l;
Init (l);
xuat(l);
int i=0;
char c[30];
FILE *key;
key=fopen("Keyword.txt","a+t");
while(!feof(key)){
i++;
fgets(c,30,key);
printf("
Dong %d: %s",i,c);
char x[30];
strcpy(x,c);
printf("%s",x);
addHead(l,x);
}
printf("
Danh sach lien ket:
");
xuat(l);
}
Bài liên quan
Một nguyên tắc quan trọng khi nhờ sửa lỗi là up logcat lên.
Chứ bạn up mỗi 1 đống code lên rồi bắt mọi người dò lỗi cho bạn sao. Update thêm đi nhé
Bạn nên tách thành các thành phần riêng.
VD 1 lớp link-list xây dựng đối tượng link-list chỉ cung cấp các phương thức của link-lít.
1 lớp làm nhiện vụ đọc file và phần giải từ có phương thức check end và get keywork.
2 lớp kiểm thử các lớp trên.
1 lớp chính dể ghép hai lớp con vào thực hiên yêu cầu bài toán.