关于顺序表插入的问题
我编写了下面的程序,想建立一个顺序表,并且在i位置前插入元素e,i和e全由键盘输入,并输出插入后的顺序表及表长。但是程序虽然能运行,结果却有问题,例如我创建表长5的顺序表11 33 44 55 66,然后想在位置2前插入22,但结果却是11 400 33 44 55 66
请问哪里出错了,希望大神斧正!!
#include<stdio.h>
#include<malloc.h>
#define LIST_INIT_SIZE 100
#define LISTCREMENT 10
#define OK 1
#define OWERFLOW -2
typedef int ElemType;
typedef struct{
ElemType *elem;
int length;
int listsize;
}Sqlist;
void InitList(Sqlist&L)
{
L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if(!L.elem) printf("overflow");
L.length = 0;
L.listsize = LIST_INIT_SIZE;
}
void CreateList(Sqlist&L)
{
int i;
printf("请输入线性表元素的个数\n");
scanf("%d",&L.length);
printf("请输入元素\n");
for(i=1;i<=L.length;i++)
{
scanf("%d",&L.elem[i-1]);
}
printf("线性表的长度为:%d\n线性表的元素为:",L.length);
for(i=1;i<=L.length;i++)
{
printf("%d ",L.elem[i-1]);
}
printf("\n");
}
void Print(Sqlist &L)
{
int i;
for(i=0;i<L.length;i++)
printf("%d ",*(L.elem+i));
printf("\n长度为:%d\n\n",L.length);
}
void ListInsert(Sqlist&L)
{
int i,e;
printf("请输入i和e的值:\n");
scanf("%d,%d",&i,&e);
if(i<1||i>L.length+1)
printf("插入位置不存在");
if(L.length>=L.listsize){
ElemType *newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTCREMENT)*sizeof(ElemType));
if(!newbase)
printf("overflow");
L.elem=newbase;
L.listsize+=LISTCREMENT;
}
int j;
for(j=L.length;j>=i;j--)
L.elem[j]=L.elem[j-1];
L.elem[i-1]=e;
++L.length;
}
int main(){
Sqlist L;
InitList(L);
CreateList(L);
ListInsert(L);
Print(L);
}