单链表创建通讯录问题

新手上路,请多包涵

我的这个程序在单链表插入数据后输出中断了,不知道是出了什么问题,求大佬帮我看看

代码如下:

#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");
}
阅读 1k
1 个回答
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进