【发布时间】:2014-11-15 17:14:34
【问题描述】:
我刚刚开始使用链接列表,我不太确定我是否正确地使用它。我正在尝试初始化一个链接列表并用 .txt 文件中的信息填充它。然后使用打印功能,我只想打印出链接列表中的信息。但是,每次我尝试遍历链表并打印出指针中的内容时,它都会崩溃。任何提示都会有所帮助和赞赏。这是我的代码:
struct employeeData {
int EMP_ID;
char name[20];
int dept;
int rank;
double salary;
};
struct employeeData employee;
struct node {
struct employeeData employee;
struct node *next;
};
struct node *myList = NULL;
struct node initializeList (struct employeeData employee[], struct node myList[]);
void print (struct employeeData employee[], struct node myList[]);
int main () {
int x;
initializeList(&employee, &*myList);
print(&employee, &*myList);
System("PAUSE");
return 0;
}
struct node initializeList (struct employeeData employee[], struct node myList[]){
struct node *newNode = (struct node*)(malloc(sizeof(struct node)));
FILE *ifp;
ifp = fopen("empInfo.txt", "r");
fscanf(ifp, "%d %s %d %d %lf\n", &newNode->employee.EMP_ID, newNode->employee.name, &newNode->employee.dept, &newNode->employee.rank, &newNode->employee.salary);
//newNode->next = NULL;
myList = newNode;
struct node *temptr = myList;
while (newNode->employee.EMP_ID != 0) {
fscanf(ifp, "%d %s %d %d %lf\n", &newNode->employee.EMP_ID, newNode->employee.name, &newNode->employee.dept, &newNode->employee.rank, &newNode->employee.salary);
temptr->next = newNode;
newNode->next = NULL;
}
return *myList;
}
void print (struct employeeData employee[], struct node myList[]){
struct node *temptr = myList;
printf("WOW");
while(temptr->next!=NULL){
printf("WOW");
printf("%d %s %d %d %lf\n", temptr->employee.EMP_ID, temptr->employee.name, temptr->employee.dept, temptr->employee.rank, temptr->employee.salary);
temptr = temptr->next;
}
}
【问题讨论】:
-
请注意,在调试时,最好通过至少以换行符结束每个
printf()来确保调试输出出现。您甚至可能还需要添加fflush(stdout);。否则,不能保证输出及时出现。 (即使使用换行符,如果输出通过管道传输到诸如less之类的命令,换行符可能不会将数据强制输出到管道。)
标签: c list function linked-list