3
我試圖減去兩個連續的節點並將結果放在一個新的節點之前。 但我得到分段錯誤,然後程序停止響應。在減去鏈接列表元素時的分段錯誤
這裏LinkList
是一種結構。
void subtract_node(LinkList **p)
{
LinkList *q,*temp=NULL,*r;
int i=0;
q=r=*p;
temp=(LinkList*)malloc(sizeof(LinkList));
while(q!=NULL)
{
temp->item=q->next->item-q->item;
temp->next=q;
if(i==0)
{
*p=r=temp;
r=r->next->next;
q=q->next->next;
}
else
{
r->next=temp;
temp=r;
r=r->next->next;
q=q->next->next;
}
printf("%d",i++);
}
}
要求人們在代碼中發現錯誤不是特別富有成效。您應該使用調試器(或添加打印語句)來隔離問題,然後構造一個[最小測試用例](http://sscce.org)。 – 2013-02-17 18:05:25
你可以給我們結構定義本身而不是寫'這裏LinkList是一個結構.' – 2013-02-17 18:05:57
當你的列表中有奇數個節點時,你認爲在算法的結尾會發生什麼? – WhozCraig 2013-02-17 18:11:22