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