【高手进来看下】一个小小的顺序表错误
这是我建的一个顺序表运行程序后出了点问题 怎么回事???
#include <stdio.h>
#include <stdlib.h>
#define MAXNUM 100
typedef struct
{
char name[20];
char sex[10];
int age;
}elemtype;
elemtype List[MAXNUM];
int num=-1;
/*
typedef struct
{
elemtype List[MAXNUM];
int num;
}listtype;
*/
int main()
{
void Create(elemtype List[],int *num,int n);//建表
int Insert(elemtype List[],int *num,int i);//插入
int Delete(elemtype List[],int *num,int i);//删除
void Print(elemtype List[],int *num);//输出
elemtype T;
int n;
int i,j;
printf("Please input number:\n");
scanf("%d",&n);
Create(&T,&num,n);
Print(&T,&num);
printf("请输入你要插得位置\n");
scanf("%d",&i);
if(Insert(&T,&num,i))
Print(&T,&num);
printf("请输入你要删除的位置\n");
scanf("%d",&j);
if(Delete(&T,&num,j))
Print(&T,&num);
getchar();
return 0;
}
void Create(elemtype List[],int *num,int n)
{
if(n>MAXNUM-1||*num>MAXNUM-1)
{
printf("顺序表已满!\n");
}
for(int i=0;i<n;i++)
{
printf("请输入姓名:\n");
scanf("%s",&List[++*num].name);
getchar();
printf("请输入性别:\n");
scanf("%s",&List[*num].sex);
getchar();
printf("请输入年龄:\n");
scanf("%d",&List[*num].age);
getchar();
printf("\n\n");
}
}
void Print(elemtype List[],int *num)
{
for(int i=0;i<=*num;i++)
{
printf("%s\n",List[i].name);
printf("%s\n",List[i].sex);
printf("%d\n",List[i].age);
printf("\n");
}
}
int Insert(elemtype List[],int *num,int i)
{
elemtype x;
int j;
if(i<0||i>*num+1)
{
printf("i 值不合法\n");
return 0;
}
if(*num>MAXNUM-1)
{
printf("表满不能插入\n");
return 0;
}
printf("输入你要新插入的表信息:\n");
printf("请输入姓名:\n");
scanf("%s",&x.name);
getchar();
printf("请输入性别:\n");
scanf("%s",&x.sex);
getchar();
printf("请输入年龄:\n");
scanf("%d",&x.age);
getchar();
printf("\n\n");
for(j=*num;j>=i;j--) List[j+1]=List[j];
List[i]=x;
(*num)++;
return 1;
}
int Delete(elemtype List[],int *num,int i)
{
int k;
if(i<0||i>*num+1)
{
printf("i 值不合法\n");
return 0;
}
for(k=i;k<*num;k++) List[k]=List[k+1];
(*num)--;
return 1;
}