C ++程序已停止工作链接列表

时间:2017-04-18 07:30:39

标签: c++ data-structures codeblocks

下面的代码工作正常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;
}
}

1 个答案:

答案 0 :(得分:1)

嗯,简短的回答:如果您正在编写C ++代码,请不要使用malloccalloc和其他* alloc。你有很好的newdelete。使用* alloc,你不会为std::string获得内存,因为std::string也是类,你也必须为每个字符串分配内存。