以下功能有什么问题吗?他们不知何故造成了段故障。
struct processNode* create_node()
{
struct processNode* newNode = (struct processNode*)malloc(sizeof(struct processNode));
newNode->next = NULL;
return newNode;
}
struct processNode* append_node(struct processNode* list,struct processNode* newNode )
{
struct processNode* tracker= NULL;
tracker = list;
if(tracker == NULL)
{
tracker = newNode;
}
else
{
while(tracker->next != NULL)
{
tracker =tracker->next;
}
tracker->next = newNode;
tracker = tracker->next;
}
tracker->next=NULL;
tracker = list;
return tracker;
}
我正在C语言中创建一个Shell,需要创建一个链接列表来解析用户的命令行。在第二个函数中,我打算返回带有新添加的指针的新列表。
最佳答案
我想函数将返回一个指向列表开头的指针。
假设在list
为NULL
的情况下调用该函数
所以这很好:
if(tracker == NULL)
{
tracker = newNode;
}
但在这儿
tracker = list; <---- Not good....
return tracker;
您覆盖跟踪器并返回NULL
您可以尝试像:
struct processNode* append_node(struct processNode* list,struct processNode* newNode )
{
struct processNode* tracker= NULL;
tracker = list;
if(tracker == NULL)
{
tracker = newNode;
return tracker; // Notice
}
while(tracker->next != NULL)
{
tracker =tracker->next;
}
tracker->next = newNode;
return list;
}
关于c - 调试以下功能(段错误),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43446009/