gpt4 book ai didi

c - 减去链表元素时的段错误

转载 作者:太空狗 更新时间:2023-10-29 15:41:02 24 4
gpt4 key购买 nike

我正在尝试减去两个连续的节点并将结果放在它们之前的一个新节点中。但是我遇到段错误,然后程序停止响应。

这里的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++);
}
}

最佳答案

如果不首先对其内容进行空检查,则不能取消引用链表中的 next 指针。具体来说,这个表达式

q->next->item - q->item

q->nextNULL 时将失败。您确实检查了循环 header 中的 q 是否有 NULL,但是您还需要检查 q->next 以避免崩溃:

while((q!=NULL) && (q->next != NULL)) {
...
}

关于c - 减去链表元素时的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14924249/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com