下面的代码工作正常3 4或一些时间6输入,然后出现“程序已停止工作”我检查了所有的东西,但没有得到线索我使用代码块。
struct info{
string name;
string phone;
};
struct node{
info contact;
node *link;
};
void SaveToFile(node *start);
void AddNode(node *&start, info contact);
void display(node *start);
int main()
{
bool check = true;
int choice;
info Newcontact;
node *start = NULL;
while(check){
cout<<" ----------------------------- \n";
cout<<"| PHONE DIRECTORY |\n";
cout<<" ----------------------------- \n";
cout<<"|1: Insert a Contact |\n";
cout<<"|4: DISPlAY Contacts |\n";
cout<<"|6: EXIT |\n";
cout<<" ----------------------------- \n";
cout<<"Enter your choice: ";
cin>>choice;
switch(choice){
case 1:
cout<<"Enter Name: ";
cin>>Newcontact.name;
cout<<"Enter Contact No: ";
cin>>Newcontact.phone;
AddNode(start,Newcontact);
break;
case 4:
display(start);
break;
case 6:
check = false;
break;
}
}
return 0;
}
这些是我添加新元素和显示链接列表的功能
void AddNode(node *&start, info User_contact){
node *temp, *p;
p=start;
temp = (node *)malloc(sizeof(node));
temp->contact = User_contact;
if(start==NULL){
start = temp;
temp ->link=NULL;
}
else{
while(p->link!=NULL){
p=p->link;
}
p->link=temp;
temp->link=NULL;
}
}
void display(node *start){
node *p = start;
while(p!=NULL){
cout<<"NAME: "<<p->contact.name<<" "<<"PNONE: "<<p->contact.phone<<"\n";
p=p->link;
}
}
答案 0 :(得分:1)
嗯,简短的回答:如果您正在编写C ++代码,请不要使用malloc
,calloc
和其他* alloc。你有很好的new
和delete
。使用* alloc,你不会为std::string
获得内存,因为std::string
也是类,你也必须为每个字符串分配内存。