gpt4 book ai didi

c - 如何删除链表中的最后一项?

转载 作者:行者123 更新时间:2023-11-30 15:21:57 27 4
gpt4 key购买 nike

我正在开发一个链接列表程序,并试图删除最后一项。我已经尝试了下面的功能,但它有问题并导致段错误。

我在头文件中有一个这样的结构:

struct test{
char * name;
char * type;
struct test * next;
};

我在单独的 .c 文件中有一个函数,如下所示:

//NOTE Correct memory is allocated in other parts of the program
//(i.e not in this function)
//Also values are initialized in other functions...etc

test * removeLastItem(test * head)
{
test * parent, * cursor;

if(head == NULL) //if list is empty return NULL
{
return NULL;
}

else
{
while(cursor->next != NULL) //untill last item of the list is found..
{
parent = cursor; //parent equal to current element
cursor = cursor->next; //current element set to next pointer of current element
}

parent->next = NULL; //parent next pointer is now null
}

return head; //return the head of the list
}

我不太确定我的暗示是否正确,但我需要返回列表的头部,我确实相信我正在这样做。任何帮助将不胜感激。

最佳答案

  1. 您没有初始化光标
  2. 不要泄露您删除的节点。此处某处可能应该有一个 free() 调用。
  3. 考虑一下如果您的列表只有一个条目,您需要返回什么。

关于c - 如何删除链表中的最后一项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29402381/

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