【发布时间】:2013-03-07 01:59:33
【问题描述】:
我不知道为什么会出现段错误。基本思想是使用链表递归地插入整数。
node* insert(node** head, int integer)
{
node* temp = malloc(sizeof(node));
node* temp1;
node* newNode;
if(*head == NULL)
{
temp->num = integer;
temp->next = *head;
*head = temp;
}
else if((*head)->num > integer)
{
temp = *head;
temp1 = temp->next; //breaks the link
temp->next = newNode; //creates a new node
newNode->num = integer; //adds int
newNode->next = temp1; //links new node to previously broken node
temp1->next = *head; //next node is NULL
*head = temp1; //Makes next node head again
}
else
insert(&((*head)->next), integer);
return(temp);
}
我在 GDB 中运行了这段代码,它在temp1->next = *head 处出现了错误,但我不明白为什么。我什至放了笔记来帮助自己,但我想它不起作用。有人可以告诉我为什么我会出现段错误吗?谢谢。
【问题讨论】:
-
分段错误前
head的值是多少? (head,不是*head)。我这样问,因为它可能是分段错误的根源:取消引用空指针。
标签: c recursion linked-list segmentation-fault