程序运行正确,输出乱码,求大神指出错误
#include<stdio.h>#include <stdlib.h>
#define N 2
typedef int Status;
typedef int ElemType;
typedef struct student{
int num;
char name[10];
float score;
}stu;
typedef struct LNode{
ElemType date;
struct LNode *next;
}LNode,*LinkList ;
void main()
{int i,e,j;
LinkList L;
LNode *p;
Status ListInitList_L(LinkList &L);
Status ListCreat_L(LinkList &L);
Status ListInsert_L(LinkList &L,int i,ElemType e);
Status ListDelete_L(LinkList &L,int i,ElemType &e);
printf("\t请选择对链表的操作,操作菜单如下: \n");
printf("\t**********************************************\n");
printf("\t 1 建立链表(C) \n");
printf("\t 2 初始化链表(N) \n");
printf("\t 3 链表中插入元素(I) \n");
printf("\t 4 链表中删除元素(D) \n");
printf("\t 5 退出系统(E) \n");
printf("\t**********************************************\n");
printf("请输入选择的功能号1-5\n");
while(j!=5){
printf("\n选择进行的操作:");
do
{
scanf("%d",&j);
if(j<1||j>5)
printf("输入错误,重新输入正确的数字\n");
}while(j<1||j>5);
switch(j)
{case 1:printf("建立链表\n");
printf("请输入单链表的数据\n");
ListCreat_L(L);
for(p=L->next;p!=NULL;p=p->next)
printf("%d",p->date);
break;
case 2:printf("初始化链表\n");
ListInitList_L(L);
break;
case 3:printf("链表中插入元素\n");
printf("选择插入的位置\n");
scanf("%d",&i);
printf("选择插入的元素\n");
scanf("%d",&e);
ListInsert_L(L, i, e);
for(p=L->next;p!=NULL;p=p->next)
printf("%d",p->date);
break;
case 4:printf("链表中删除元素\n");
printf("选择删除的位置\n");
scanf("%d",&i);
printf("选择删除的元素\n");
scanf("%d",&e);
ListDelete_L(L, i, e);
for(p=L->next;p!=NULL;p=p->next)
printf("%d",p->date);
break;
case 5:exit(0);
break;}
}
}
Status ListInitList_L(LinkList &L)
{//链表初始化
L = (LinkList)malloc(sizeof(LNode));
if(L == NULL)
printf("申请内存空间失败\n");
L->next = NULL;
return 1;
}
Status ListCreat_L(LinkList &L)
{//链表的建立
int i, e;
L = (LinkList)malloc(sizeof(LNode));
L->next = NULL;
for(i=0;i<N;i++)
{
LNode *p;
scanf("%d,&e");
p=(LinkList)malloc(sizeof(LNode));
p->date=e;
p->next=L->next;
L->next=p;
}
return 1;
}
Status ListInsert_L(LinkList &L,int i,ElemType e)
{//链表的插入
int j;
LNode *p,*s;
p=L;j=0;
while(p&&j<i-1){
p=p->next;++j;
}
if(!p||j>i-1)return 0;
s=(LinkList)malloc(sizeof (LNode));
s->date=e;s->next=p->next;
p->next=s;
return 1;
}
Status ListDelete_L(LinkList &L,int i,ElemType &e)
{//链表的删除
int j;
LNode *p,*q;
p=L;j=0;
while(p->next&&j<i-1){
p=p->next;++j;
}
if(!(p->next)||j>i-1)return 0;
q=p->next;p->next=q->next;
e=q->date;free(q);
return 1;
}