请教各位大神,我的程序执行的时候无法终止?

请教各位大神,我的程序执行的时候无法终止,case1和3有这个问题,用断点看了半天没看懂,用loop ,goto loop 的方法也试过,没有解决问题。请教。

#include <iostream>
#include <string>
#include <stdlib.h>
#include <stdio.h>
#include <iomanip>
using namespace std;

typedef int ElemType;
struct Addressbook
{
    ElemType data;
    Addressbook *next;
};

class LinkList 
{
private :
    Addressbook *Head;
public:
    LinkList ();
    ~LinkList(){}
    void Creat (int n);
    void Display();
    void Insert (int i,ElemType e);
    void Delete(int i);
};

LinkList::LinkList()
{
    Head=new Addressbook;
    Head->next=NULL;
}

void LinkList::Creat(int n)
{
    int i,length;
    Addressbook *p,*q;
    length=n;
    if(length>0)
    {
        cout<<"Input data elem:";
        for(i=1;i<=length;i++)
        {
            p=new Addressbook;
            cin>>p->data;
            p->next=NULL;
            if(i==1)
                Head->next=p;
            else
                q->next=p;
            q=p;
        }
    }
    else 
        cout<<"Length Error!"<<endl;
}

void LinkList::Display()
{   
    Addressbook *p;
    p=Head->next;
    if(p==NULL)
        cout<<"LinkList Is Empty!"<<endl;
    else
    {
        cout<<"Data Elem:";
        while(p!=NULL)
        {
            cout<<"通讯录人数"<<endl;
            cout<<"姓名 性别 住址 电话号码"<<endl;
            cout<<setw(20)<<p->data;
            p=p->next;
        }
    }
    cout<<endl;
}

void LinkList::Insert (int i,ElemType e)
{
    Addressbook *p,*q,*s;
    int k=1;
    q=Head;
    p=Head->next;
    while(k<i&&p!=NULL)
    {
        q=p;
        p=p->next;
        k++;
    }
    if (k==i)
    {
        s=new Addressbook;
        s->data=e;  
        s->next=p;
        q->next=s;
        cout<<"Insert Success!"<<endl;
    }
    else
        cout<<"Insert Location i Error!"<<endl;
}

void LinkList::Delete(int i)
{
    Addressbook *p,*q;
    int k=1;
    q=Head;
    p=Head->next;
    while(k<i&&p!=NULL)
    {
        q=p;
        p=p->next;
        k++;
    }
    if(k==i)
    {
        q->next=p->next;
        delete p;
        cout<<"已删除通讯录信息"<<endl;

    }
    else
    {
        cout <<"Delete Location Error!"<<endl;
    }
}

void main()
{
    int i,n,choice=0;
    ElemType e;
    LinkList ll;
    do
    {   
        cout<<"************************************"<<endl;
        cout<<"***********通讯录信息管理系统*******"<<endl;
        cout<<"***************1建立****************"<<endl;
        cout<<"***************2查询****************"<<endl;
        cout<<"***************3插入****************"<<endl;
        cout<<"***************4删除****************"<<endl;
        cout<<"***************0退出****************"<<endl;
        cout<<"************************************"<<endl;
        cout<<"请选择0-4";
        cin>>choice;
        switch(choice)
        {
        case 1:
            {
                cout<<"请输入人数";
                cin>>n;
                ll.Creat(n);
                break;
                /*goto loop;*/
            }
        loop:case 2:
            {
                ll.Display();
                break;
            }
        case 3:
            {
                cout<<"请输入要插入位置";
                cin>>i;
                cout<<"请输入要插入的通讯录信息逗号隔开"<<endl;
                cout<<"姓名,性别,住址,电话号码"<<endl;
                cin>>e;
                ll.Insert(i,e);
                break;
                /*goto loop;*/
            }
        case 4:
            {
                cout<<"请输入要删除的位置";
                cin>>i;
                ll.Delete(i);
                break;
            }
        case 0:break;
        default:cout<<"请输入正确数字"<<endl;
        }
    }while(choice);
}







2个回答

问老师以后弄清楚了。

typedef int ElemType;
struct Addressbook
{
    ElemType data;
    Addressbook *next;
};

以及阅读主函数和creat函数

void LinkList::Creat(int n)
{
  .......
    if(length>0)
    {
        cout<<"Input data elem:";

说明data 类型应该是char而不是定义为int,总之把typedef int改为typedef char 即可正确运行。

如果问题得到解决,请点我回答左上角的采纳和向上的箭头,谢谢




#include <iostream>
#include <string>
#include <stdlib.h>
#include <stdio.h>
#include <iomanip>
using namespace std;

typedef int ElemType;
struct Addressbook
{
    ElemType data;
    Addressbook *next;
};

class LinkList 
{
private :
    Addressbook *Head;
public:
    LinkList ();
    ~LinkList(){}
    void Creat (int n);
    void Display();
    void Insert (int i,ElemType e);
    void Delete(int i);
};

LinkList::LinkList()
{
    Head=new Addressbook;
    Head->next=NULL;
}

void LinkList::Creat(int n)
{
    int i,length;
    Addressbook *p,*q;
    length=n;
    if(length>0)
    {
        cout<<"Input data elem:";
        for(i=1;i<=length;i++)
        {
            p=new Addressbook;
            cin>>p->data;
            p->next=NULL;
            if(i==1)
                Head->next=p;
            else
                q->next=p;
            q=p;
        }
    }
    else 
        cout<<"Length Error!"<<endl;
}

void LinkList::Display()
{   
    Addressbook *p;
    p=Head->next;
    if(p==NULL)
        cout<<"LinkList Is Empty!"<<endl;
    else
    {
        cout<<"Data Elem:";
        while(p!=NULL)
        {
            cout<<"通讯录人数"<<endl;
            cout<<"姓名 性别 住址 电话号码"<<endl;
            cout<<setw(20)<<p->data;
            p=p->next;
        }
    }
    cout<<endl;
}

void LinkList::Insert (int i,ElemType e)
{
    Addressbook *p,*q,*s;
    int k=1;
    q=Head;
    p=Head->next;
    while(k<i&&p!=NULL)
    {
        q=p;
        p=p->next;
        k++;
    }
    if (k==i)
    {
        s=new Addressbook;
        s->data=e;  
        s->next=p;
        q->next=s;
        cout<<"Insert Success!"<<endl;
    }
    else
        cout<<"Insert Location i Error!"<<endl;
}

void LinkList::Delete(int i)
{
    Addressbook *p,*q;
    int k=1;
    q=Head;
    p=Head->next;
    while(k<i&&p!=NULL)
    {
        q=p;
        p=p->next;
        k++;
    }
    if(k==i)
    {
        q->next=p->next;
        delete p;
        cout<<"已删除通讯录信息"<<endl;

    }
    else
    {
        cout <<"Delete Location Error!"<<endl;
    }
}

void main()
{
    int i,n,choice=0;
    ElemType e;
    LinkList ll;
    do
    {   
        cout<<"************************************"<<endl;
        cout<<"***********通讯录信息管理系统*******"<<endl;
        cout<<"***************1建立****************"<<endl;
        cout<<"***************2查询****************"<<endl;
        cout<<"***************3插入****************"<<endl;
        cout<<"***************4删除****************"<<endl;
        cout<<"***************0退出****************"<<endl;
        cout<<"************************************"<<endl;
        cout<<"请选择0-4";
        cin>>choice;
        switch(choice)
        {
        case 1:
                cout<<"请输入人数";
                cin>>n;
                ll.Creat(n);
                break;
        case 2:
                ll.Display();
                break;
        case 3:
                cout<<"请输入要插入位置";
                cin>>i;
                cout<<"请输入要插入的通讯录信息逗号隔开"<<endl;
                cout<<"姓名,性别,住址,电话号码"<<endl;
                cin>>e;
                ll.Insert(i,e);
                break;
        case 4:
                cout<<"请输入要删除的位置";
                cin>>i;
                ll.Delete(i);
                break;
        case 0:break;
        default:cout<<"请输入正确数字"<<endl;
        }
    }while(choice);
}


图片说明

caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 你的逗号是中文全角的。你的程序也没有接收除了学号以外其他变量的代码逻辑。
大约一年之前 回复
weixin_44123764
岳超华 首先感谢回答!但是这样验证没有代表性,请输入,“丫丫,男,山西,123456”发现程序停不下来。这是那个地方除了问题呢,switch里加上break了啊,求救。
大约一年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问

相似问题

1
请教各位大神有没有js控件可以实现附图中表格的渲染效果
1
请教各位大神,安装Jekins的时候许多插件无法正常安装应该如何解决,我的Jenkins版本是Jenkins2.107.1
2
我是刚刚大一刚刚入门的学生,老师布置的作业搞不懂请教各位大神RecycleView中部分控件的显示和隐藏.如图
0
spyder 无法启动了,求教各位大神帮忙出出主意
1
求求各位大神,很着急,如何将数据库的信息分别渲染到各自的下拉框
0
各位大神有没有C#Winform用自带的chart连接SQLIte数据库得到饼形图的相关程序吗
1
请教各位大神们,Linux中间件需要在linux环境下开发吗
1
用r的RODBC包中读取mysql中的数据时,读到r中后其中一列的数据发生了变化,请教各位大神是什么原因呢 ?
2
程序在同事电脑没有报错,在我的电脑上就有,请教各位大神如何解决这个问题?
2
写好了的python代码无论如何都无法在mac上的terminal上执行,请各位大神支个招。
1
求各位路过的大神们帮帮忙,谢谢!我用tp5做成一个网站,在本地可以运行,但是在阿里云里面运行错误,而且错误代码还是tp5默认的代码,不知道怎样解决,再次感谢各位大神!
3
请教各位大神如何用Python画出如下函数图形
1
biee11 导出csv文件时没有一级表头,导出其他格式没问题,请教各位大神。
2
有没有微信小程序云开发的大神?
2
各位大神,安装phpmyadmin不配置apache环境行吗?
0
怎么写这样的Demo,想了很久,写不出来,还是哪里出错了,请教各位大神!
0
跪求大神发个小程序端的商品首页库存显示代码参考。
0
路过的各位大神们,请问哪位大神能够解决在用three.js环境下,用鼠标在外面点击拖动3D模型的图片,然后放在场景中生成相应的3D模型,并且3D模型可以随意拖动位置,真心的感谢各位大神能够帮帮忙!!!
1
这个程序我自己在编译器上通过了,但是OJ上一直runtime error。各位大神可否帮我看看代码有什么问题吗?
1
请教各位大神,h5 如何限制涂色区域,只可以在图片内部涂色?