我已经完成了链接列表的基本实现,但是在取消注释注释行时它给出了Segmentation错误,否则它的工作正常。 我无法理解为什么它会给出错误。 请给我一些帮助
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;
}
答案 0 :(得分:3)
您没有初始化节点的初始指针
Node *List, *list2;
写
Node *List = NULL, *list2 = NULL;
考虑到您展示的程序中未使用变量list2
。
编写函数insert
的另一种方法是以下
void insert( Node **head, Symbol sym )
{
Node *temp = malloc( sizeof( Node ) );
if ( temp != NULL )
{
temp->value = sym;
temp->next = NULL;
while ( *head ) head = &( *head )->next;
*head = temp;
}
}