我想按链接列表中的字母顺序排列名称,但得到运行时错误。我在这里做错了什么?排序链接列表中的名称
#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