gpt4 book ai didi

c++ - 递归在链表c++中添加结构

转载 作者:行者123 更新时间:2023-11-30 03:01:04 26 4
gpt4 key购买 nike

我在按数字顺序将结构插入链表时遇到问题。每个结构都有一个“数字”,如下面的代码所示。我试图让编号最小的结构成为列表的头部(即:成为“人”指向的结构)。我一整天都在断断续续地盯着这段代码看,我不知道它出了什么问题。任何帮助深表感谢。谢谢

Person *addPerson(Person *people, Person *addition, int &numList)
{
if (people == NULL && numList == 0)
{
people = addition;
numList++;
return people;
}
if (people->number >= addition->number)
{
addition->nextPerson = people;
people = addition;
return people;
}
else if (people->number < addition->number && people->nextPerson != NULL)
{
addPerson(people->nextPerson, addition, numList);
}
else if (people->number < addition->number && people->nextPerson == NULL)
{
people->nextPerson = addition;
numList++;
return people;
}
}

编辑**

int main()
{
Person *blake = new Person;
Person *kyra = new Person;
Person *elon = new Person;
Person *bill = new Person;
Person *people = NULL;

blake->number = 1;
blake->name = "blake";
blake->lastName = "madden";
blake->nextPerson = NULL;

kyra->number = 2;
kyra->name = "kyra";
kyra->lastName = "madden";
kyra->nextPerson = NULL;

elon->number = 3;
elon->name = "elon";
elon->lastName = "musk";
elon->nextPerson = NULL;

bill->number = 4;
bill->name = "bill";
bill->lastName = "gates";
bill->nextPerson = NULL;

int num = 0;
int &numList = num;

people = addPerson(people, blake, numList);

people = addPerson(people, kyra, numList);
people = addPerson(people, elon, numList);
people = addPerson(people, bill, numList);

cout << people->name << '\n' << people->lastName;
}

最佳答案

您没有在第三个 if block 中使用 addPerson() 的返回值。尝试:

people->nextPerson = addPerson(people->nextPerson, addition, numList);
return people;

你还需要 return people; 否则你会在你的函数结束时运行并且不会返回任何有意义的东西(我的编译器警告我,你应该改变你的警告设置所以你的也是)。

通过上述更改,您的代码似乎可以正确运行。

关于c++ - 递归在链表c++中添加结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11480264/

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