구조체를 연결된 순서대로 숫자를 삽입하는 데 문제가 있습니다. 각 구조체에는 아래 코드에 표시된 "숫자"가 있습니다. 가장 낮은 숫자 구조체를 목록의 머리 수 (즉 : "사람"에 의해 가리키는 구조체 수) 노력하고 있어요. 나는 하루 종일이 코드를 쳐다 보았고, 무엇이 잘못되었는지를 알 수 없다. 어떤 도움이라도 대단히 감사합니다. 감사합니다연결된 목록에 구조체를 추가하는 재귀 C++
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;
}
아, 그거야. 그 해결책이 문제의 원인이 될까요? 꼭 목록의 머리 바로 뒤에 있지 않은 노드를 추가하고 싶다면? –
또한 부차적 인 질문이지만 비교적 단순한 문제로 인해 더 어려운 개념이 더 어려워 질 것입니다. 이 문제를 훨씬 쉽게 해결할 수 있어야한다고 생각합니다. –
저는 여러분이 방금 시작했을 때, 특히 재귀를 시작할 때 이와 같은 것을 간과하는 것이 일반적이라고 생각합니다. 처음에는 버그를 보지 못했고 코드를 실행하려고 할 때만 무슨 일이 일어나고 있는지 명확 해졌습니다. 모든 경우에 이것이 작동하는지에 대한 귀하의 불확실성에 관해서는, 귀하의 연결된 목록 삽입기를위한 단위 테스트를 작성하는 것이 좋습니다. :) –