0
我正在寫一個程序,以根據字符串將元素插入到單個鏈表中(函數strcmp將它們放到正確的位置)。C++單鏈表(使用結構),插入錯誤
#include <iostream>
#include <cstdlib>
#include <cstring>
using namespace std;
struct list
{
int num;
char* word;
list* next;
};
list* head;
void insert(int number,char* txt){
list* ptr,*tmp;
ptr=head;
list* newlist=new list;
newlist->num=number;
newlist->next=NULL;
//newlist->word= new char(strlen(txt)+1);
newlist->word=txt;
if(head==NULL){
head=newlist;
newlist->next=NULL;
}
else while(ptr!=NULL){
if(strcmp(txt,ptr->word)>=0){
if(ptr->next!=NULL && strcmp(txt,ptr->next->word)<=0)
{
tmp=ptr->next;
ptr->next=newlist;
newlist->next=tmp;
break;
}
else if(ptr->next!=NULL && strcmp(txt,ptr->next->word)>0)
ptr=ptr->next;
else
{
//next is empty
ptr->next=newlist;
break;
}
}
else{
//txt mniejszy niz w 1szym elemencie
newlist->next=head;
head=newlist;
break;
}
return;
}
}
void print(){
list *druk;
druk=head;
while(druk!=NULL){
cout<<"txt: "<<druk->word<<" | "<<"num: "<<druk->num<<endl;
druk=druk->next;
}
return;
}
int main(){
head=NULL;
insert(242,"Szulasdj");
insert(32,"aab");
insert(32,"aab");
insert(14,"aaa");
insert(85,"bbb");
insert(5,"aac");
insert(3,"ccc");
insert(4,"cdc");
insert(2,"ccd");
print();
cout << endl << endl;
getchar();
return 0;
}
我不明白爲什麼它不打印我插入的所有元素。如果你能告訴我我的錯誤在哪裏,我會非常感激。
這裏有很多基本問題。首先,每次調用'insert'時,它會生成一個新的列表對象,然後導致內存泄漏。 – 2012-03-25 18:05:49
能更準確地解釋嗎?另外我該如何解決它?除了遵循twain249的建議之外,它工作正常。 – 2012-03-25 18:21:06