【发布时间】:2015-03-18 18:18:19
【问题描述】:
我已经完成了链接列表的基本实现,但它在取消注释注释行时给出了分段错误,否则它工作正常。 我无法理解为什么它会给出错误。 请给我一些帮助
void insert(Node **head, Symbol sym) {
Node *temp, *p = *head;;
Symbol a = sym;
temp = (Node *)malloc(sizeof(Node));
temp->value = a;
temp->next = NULL;
if (p == NULL)
*head = temp;
else {
while (p->next != NULL)
p = p->next;
p->next = temp;
}
}
void printList(Node *head) {
Node *p = head;
if(p == NULL) return;
while (p != NULL) {
printf("%d ", p->value);
p = p->next;
}
printf("\n");
}
int main() {
Node *List, *list2;
insert(&List, 0);
insert(&List, 1);
//insert(&list2, 2);
//insert(&list2, 3);
printList(List);
return 0;
}
【问题讨论】:
-
请使用
gdb之类的调试器并单步执行。 -
Node *List=NULL, *list2=NULL; -
除了个人开发或应用程序,每个节点的额外字节数和每个函数的处理步骤需要保持在低水平。人们是否应该不使用 GObject 库中的 GList 或类似的东西
标签: c pointers linked-list