m0_56730473 2021-10-20 22:14 采纳率: 50%
浏览 58

单链表创建通讯录问题

我的这个程序在单链表插入数据后输出异常中断了,不知道是出了什么问题,求指点

img

代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct{
    char num[20];
    char name[20];
    char sex[20];
    char phonenum[20];
    char qqnum[20];
} ElemType;
typedef struct LnNode
{
    ElemType elem;
    struct LnNode *next;
} LnNode,*LinkList;

//学生信息菜单栏
void menu2(){
    printf("学号\t\t\t姓名\t\t\t性别\t\t\t手机号码\t\t\tqq号\n");
}
//初始化链表
void InitList(LinkList &L){
    L=new LnNode;
    if(!L) exit(-1);
    L->next=NULL;
}
//输入数据
void InputList(ElemType *elem, int i)
{
    printf("输入学号:\n");
    scanf("%s", elem[i].num);
    printf("输入姓名:\n");
    scanf("%s", elem[i].name);
    getchar();
    printf("输入性别:\n");
    scanf("%s", elem[i].sex);
    printf("输入电话号码:\n");
    scanf("%s", elem[i].phonenum);
    printf("输入qq号:\n");
    scanf("%s", elem[i].qqnum);
}
//创建单链表
void CreatLinkList(LinkList &L){
    int i;
    ElemType array[2]={{"2013001","张珊","女","13800001919","34578"},
    {"2013002","李思","女","13910121978","20130"}};
    LinkList r=L,p;
    for(i=0;i<2;i++){
        p=new LnNode;
        if(!p) exit(-1);
        p->elem=array[i];
        p->next=NULL;
        r->next=p;
        r=p;
    }
}
//插入学生信息
bool InsertList(LinkList &L,int i,ElemType e){
    LinkList p=L,s;
    int j=0;
    while(p&&j<i-1){
        p=p->next;
        j++;
    }
    if(!p||j>i-1)
        return false;
    s=new LnNode;
    s->elem=e;
    s->next-p->next;
    p->next=s;
    return true;
}
//输出学生信息
void Output(ElemType T){
    printf("%s\t\t\t",T.num);
    printf("%s\t\t\t",T.name);
    printf("%s\t\t\t",T.sex);
    printf("%s\t\t\t",T.phonenum);
    printf("%s\n",T.qqnum);
}
//输出链表
void OutputList(LinkList L){
    LnNode *p;
    p=L->next;
    while(p!=NULL){
        Output(p->elem);
        p=p->next;
    }
}
int main()
{
    LinkList L;
    ElemType stu[20],e;
    int n,i=0,choice,loc;
    InitList(L);
    printf("初始化完成!\n");
    CreatLinkList(L);
    printf("学生信息如下:\n");
    menu2();
    OutputList(L);

    printf("输入你要插入的位置:\n");
    scanf("%d",&loc);
    printf("输入你要插入的人数:\n");
    scanf("%d",&n);
    for(i=0;i<n;i++,loc++)
    {
        InputList(stu,i);
        InsertList(L,loc,stu[i]);
    }
    printf("信息录入中.....\n");
    printf("学生的信息如下:\n");
    menu2();
    OutputList(L);

    system("pause");
}

  • 写回答

1条回答 默认 最新

  • qzjhjxj 2021-10-21 12:29
    关注

    运行了下,没发现题主的问题。

    评论

报告相同问题?

问题事件

  • 创建了问题 10月20日

悬赏问题

  • ¥15 编辑cmake lists 明明写了project项目名,但是还是报错怎么回事
  • ¥15 关于#计算机视觉#的问题:求一份高质量桥梁多病害数据集
  • ¥50 如何将脑的图像投影到颅骨上
  • ¥15 提问一个关于vscode相关的环境配置问题,就是输入中文但是显示不出来,代码在idea可以显示中文,但在vscode不行,不知道怎么配置环境
  • ¥15 netcore使用PuppeteerSharp截图
  • ¥20 这张图页头,页脚具体代码该怎么写?
  • ¥15 关于#sql#的问题,请各位专家解答!
  • ¥20 WPF MVVM模式 handycontrol 框架, hc:SearchBar 控件 Text="{Binding NavMenusKeyWords}" 绑定取不到值
  • ¥15 需要手写数字信号处理Dsp三个简单题 不用太复杂
  • ¥15 数字信号处理考试111