我无法打印整个链表.. 我的错是什么?我是链表的新手..
这是基本结构
struct data {
int id;
int age;
struct data *next;
};
主要功能
int main() {
int mode;
struct data *initial;
struct data *insert;
struct data *temp;
insert = initial;
printf("1. Insert\n5. Print List\n");
while (1) {
printf("Mode: ");
scanf("%d", &mode);
if (mode == 1) {
insert = malloc(sizeof(struct data));
printf("Id: ");
scanf("%d", &(insert->id));
printf("Age: ");
scanf("%d", &(insert->age));
insert=insert->next;
} else if (mode == 5) {
temp = initial;
while (temp != insert) {
printf("Id: %d\tAge: %d\n", temp->id, temp->age);
temp = temp->next;
}
}
}
}
谢谢你的帮助。
最佳答案
您永远不会将 initial
初始化为任何东西,甚至不是 NULL
或 0
,因此您无法明智地从中追逐一个列表。
您还需要在两次 scanf()
调用之后和赋值之前设置 insert->next = NULL;
insert = insert->next;
。您需要以某种方式将 insert
挂接到原始列表中;可能在 struct data *initial = 0;
声明时和 if (initial == 0) initial = insert;
在 insert = insert->next 之前;
。
您还需要做更多的错误检查:scanf()
和 malloc()
都可能失败,当它们失败时您应该做一些明智的事情。
关于c - 无法打印链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23637778/