删除链接列表中的所有元素

时间:2011-11-11 07:33:51

标签: c list linked-list

temp = Head;
while (Head != NULL) {
    Head = temp->nextPtr;
    free(temp);
}

在我的项目中,我使用临时链表,我想同时删除链表中的所有元素,但编译器会给出分段错误。

2 个答案:

答案 0 :(得分:5)

你在那里某处,在循环的开头或结尾都缺少temp=Head; ... temp停留在第一个头上。

最简单的方法是将temp=Head;从循环前移到循环内的第一行。

while (Head != NULL) {
    temp = Head;
    Head = temp->nextPtr;
    free(temp);
}

答案 1 :(得分:1)

我不认为您的编译器正在提供Segmentation Fault。即使在相当糟糕的投入下,它也不应该是段落错误。我认为您的程序导致了段错误:您忽略了在循环体内设置temp