线性表----插入的时候为什么得不到预期的结果啊?-有点瑕疵
#include<stdio.h>#include<malloc.h>
#include<stdlib.h>
#define maxsize 100
#define ok 1
#define error 0
int yes=0;
typedef struct
{
int elem[maxsize];
int length;
}seqlist;
void initlist(seqlist *l)
{
l->length=0;
}
int createlist(seqlist *l)
{
int i,n;
if(l->length>0)
{
printf("线性表已经存在,不需要再创建!\n");
return error;
}
printf("请输入顺序表的长度:\n");
scanf("%d",&n);
printf("请输入顺序表的元素:\n");
for(i=0;i<n;i++)
scanf("%d",&(l->elem[i]));
l->length=n;
yes=1;
return ok;
}
int inslist(seqlist *l,int i,int e)
{
int k;
if(l->length>maxsize)
{
printf("空间不足,请补充空间!\n");
return error;
}
printf("请输入插入元素的位置:\n");
scanf("%d",&i);
printf("请输入插入的元素值:\n");
scanf("%d",&e);
for(k=l->length-1;k>=i-1;i--)
l->elem[k+1]=l->elem[k];
l->elem[i-1]=e;
l->length++;
printf("插入成功!\n");
if(l->length==0)
printf("此时线性表为空!\n");
else
{
printf("此时的线性表是:\n");
for(i=0;i<l->length;i++)
printf("%d",l->elem[i]);
printf("\n");
}
return ok;
}
int dellist(seqlist *l,int i)
{
int k;
printf("请输入删除元素的位置:\n");
scanf("%d",&i);
for(k=i-1;k<l->length;k++)
l->elem[k]=l->elem[k+1];
l->length--;
printf("删除成功!");
if(l->length==0)
printf("此时线性表为空!\n");
else
{
printf("此时的线性表是:\n");
for(i=0;i<l->length;i++)
printf("%d",l->elem[i]);
printf("\n");
}
return ok;
}
int main(void)
{
seqlist l;
int i,e;
createlist(&l);
inslist(&l,i,e);
dellist(&l,i);
return 0;
}