我無法按數字順序將結構插入鏈表中。每個結構都有一個「編號」,如下面的代碼所示。我試圖讓具有最低編號的結構成爲列表的頭部(即:是「people」指向的結構)。我一整天都在盯着這個代碼,我無法弄清楚它有什麼問題。任何幫助深表感謝。由於在鏈表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;
}
哦,那有效。但是,如果我想添加一個不一定直接位於列表頭後面的節點,那麼該解決方案是否會導致問題? – 2012-07-14 02:04:52
另外,有一個側面的問題,但確實有這樣的相對簡單的事情問題表明,我會遇到更難的概念更多的麻煩?我覺得我應該能夠更輕鬆地解決這個問題。 – 2012-07-14 02:06:24
我認爲當你剛剛開始時忽略這樣的事情是完全正常的,特別是在遞歸方面。我一開始並沒有看到這個bug,只有當我嘗試運行你的代碼時,它纔會變得明顯。至於你是否在所有情況下都能正常工作的不確定性,我建議你爲你的鏈表插入器寫一個單元測試。 :) – 2012-07-14 02:08:00