Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 在链表末尾插入新节点SEGV Error_C - Fatal编程技术网

C 在链表末尾插入新节点SEGV Error

C 在链表末尾插入新节点SEGV Error,c,C,获取分段错误,请在下面的c代码逻辑帮助问题。 程序以信号SIGSEGV终止,分段故障 /* *供参考: * *SingleLinkedListNode{ *int数据; *SingleLinkedListNode*下一步; * }; * */ SinglyLinkedListNode*插入节点尾部(SinglyLinkedListNode*头,int数据){ SinglelyLinkedListNode*cur=头, *new=malloc(sizeof(struct SinglyLinked

获取分段错误,请在下面的c代码逻辑帮助问题。 程序以信号SIGSEGV终止,分段故障

/*
*供参考:
*
*SingleLinkedListNode{
*int数据;
*SingleLinkedListNode*下一步;
* };
*
*/
SinglyLinkedListNode*插入节点尾部(SinglyLinkedListNode*头,int数据){
SinglelyLinkedListNode*cur=头,
*new=malloc(sizeof(struct SinglyLinkedListNode)),*prev;
if(head==NULL)
{
头=新的;
回流头;
}
while(cur!=NULL)
{
prev=cur;
cur=cur->next;
}
上一步->下一步=新建;
回流头;
}
问题是

cur = cur -> next; // You read an uninitialized value (garbage)
在保留空间后为新节点设置值

*new = malloc ( sizeof (struct SinglyLinkedListNode)) ...

new->data = data;
new->next = NULL;

修改为下面的代码段,它现在可以工作了,还删除了额外的prev指针跟踪

SingleLinkedListNode*InsertNodeAtail(SingleLinkedListNode*head,int数据){
SinglelyLinkedListNode*cur=头,
*new=malloc(sizeof(struct SinglyLinkedListNode));
//在新节点中分配数据
新建->数据=数据;
新建->下一步=空;
//检查空头
if(head==NULL)
{
头=新的;
回流头;
}
//遍历到链接列表的末尾
while(cur->next!=NULL)
cur=cur->next;
//在链接列表的末尾附加新节点
cur->next=新建;
回流头;

}
在if块中
if(head==NULL)
必须设置head->next=NULL,否则它将指向某个随机位置。此外,在方法中的任何地方都不使用<代码>数据< /代码>。尽管其他人提到了这些点,但请考虑另外两件事:1。检查
malloc()
的返回值,如果分配失败,则返回
NULL
。2.不要用逗号分隔的形式声明局部变量。当您为每个变量重复类型,并在一行上用分号结束声明时,代码的可读性会大大提高。请确保提供有价值的建议。谢谢,我忘记分配数据了,现在可以使用了。