2017-04-18 84 views
0

以下代码工作正常3 4或某些时间6输入,然后提出“程序已停止工作”我已检查每件事物,但没有得到一个线索我使用代码-blocks。C++程序已停止工作LINK LIST

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; 
} 
} 

回答

1

好了,答案很简单的功能:如果你正在编写C++代码,不使用malloccalloc等*页头。你有很好的newdelete。使用* alloc时,您不会为std::string获取内存,因为std::string也是类,您也必须为每个字符串分配内存。