gpt4 book ai didi

c - 如何将新项目插入到C中的链接列表中(在列表末尾)

转载 作者:行者123 更新时间:2023-11-30 20:12:54 25 4
gpt4 key购买 nike

我试图了解 C 中的链接列表,但最终让自己感到困惑。

我的问题是:这是否正确地将不同的插入到列表末尾?或者只是将它们插入到开头?

目前,我正在尝试在链接列表的末尾插入一个新的。我的结构定义如下:

struct person {
char *name;
int age;
struct person *next;
};

我正在从预先分配的数组访问数据:

#define HOW_MANY 7
char *names[HOW_MANY]= {"Simon", "Suzie", "Alfred", "Chip", "John","Tim","Harriet"};
int ages[HOW_MANY]= {22, 24, 106, 6, 18, 32, 24};

这是我在函数末尾插入的内容:

static struct person * insert_end(struct person *people, char *name, int age)
{
struct person *newPeople = (struct person*)malloc(sizeof(struct person));
if (newPeople == NULL)
{
perror("Memory allocation failed");
abort();
}
newPeople->name = name;
newPeople->age = age;
if (people == NULL)
{
newPeople->next = people;
people = newPeople;
return people;
}
else {
while(newPeople->next != NULL)
{
newPeople->next = people;
}
people = newPeople;
return people;
}
}

我认为函数内的 while 循环没有被执行,我不明白为什么。谢谢!

最佳答案

您确实将新记录放在列表的开头。您必须意识到 newPeople->next 将始终为 null,因为它是新分配的。您需要迭代 people 直到 people->next 为 NULL,然后分配 newPeople。

关于c - 如何将新项目插入到C中的链接列表中(在列表末尾),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33743964/

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