我想按鏈接列表中的字母順序排列名稱,但得到運行時錯誤。我在這裏做錯了什麼?排序鏈接列表中的名稱
#include <iostream>
#include <string>
using namespace std;
struct node{
string name;
node *next;
};
node *A;
void addnode(node *&listpointer,string newname){
node *temp;
temp = new node;
if (listpointer == NULL){
temp->name = newname;
temp->next = listpointer;
listpointer = temp;
}else{
node *add;
add = new node;
while (true){
if(listpointer->name > newname){
add->name = newname;
add->next = listpointer->next;
break;
}
listpointer = listpointer->next;
}
}
}
int main(){
A = NULL;
string name1 = "bob";
string name2 = "tod";
string name3 = "thomas";
string name4 = "kate";
string name5 = "alex";
string name6 = "jimmy";
addnode(A,name1);
addnode(A,name2);
addnode(A,name3);
addnode(A,name4);
addnode(A,name5);
addnode(A,name6);
while(true){
if(A == NULL){break;}
cout<< "name is: " << A->name << endl;
A = A->next;
}
return 0;
}
爲什麼你的代碼中沒有一個而是兩個*無限循環? – 2010-05-31 04:35:58
你也有一個很好的內存泄漏,在'listpointer'不爲NULL的情況下'temp'被創建,但未被使用(並且因此不可能被釋放)在'addnode'中。 – 2010-05-31 04:38:07