我的这个程序在单链表插入数据后输出异常中断了,不知道是出了什么问题,求指点
代码如下:
#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");
}