首先 错误提示如下:
Run-Time Check Failure #3 - The variable 'L' is being used without being initialized.
代码如下(省略Status.h):
#include
#include
#include
#define ListSize 250 //可以存储250个数据
#define Increasing 50 //后期每次增加50个数据
typedef int Elemtype;
typedef struct
{
Elemtype *elem;
int length; //目前储存元素的个数
int listsize; //可以储存的元素个数
}SqList;
Status InitList(SqList &L);
Status InsertList(SqList &L,int i,Elemtype e);
Status InitList(SqList &L)
{
L.elem=(Elemtype*)malloc(ListSize*sizeof(Elemtype));
if(!L.elem) exit(FALSE);
L.length=0;
L.listsize=ListSize;
return OK;
}
Status InsertList(SqList &L,int i,Elemtype e)
{
if(iL.length+1) return ERROR ;
if(L.length>=L.listsize)
{
L.elem=(Elemtype*)realloc(L.elem,(ListSize+Increasing)*sizeof(Elemtype));
if(!L.elem) exit(OVERFLOW);
L.listsize+=Increasing;
}
Elemtype *q=&(L.elem[i-1]); //q现在位于第i个元素的位置
int j=L.length-1; //从n开始倒退着像后移动一个地址
Elemtype *p=&(L.elem[L.length-1]); //p代表第n个元素
for(j;j>=i-1;j--) *(p+1)=*p;
*q=e; //地址不变,数值变化
L.length++;
return OK;
}
void main()
{
SqList L;
Status InitList(SqList &L);
Elemtype a[10]={1,2,3,4,5,6,7,8,9,10};
L.elem=a;
int i;
for(i=0;i<=L.length;++i)
printf("%d",L.elem[i]);
L.length=i;
printf("OK\n");
}