帮忙 看下
#include<stdlib.h>#include<stdio.h>
#define OK 1
#define ERROR 0
#define OVERFLOW 2
#define List_Init_Size 100
#define List_add 10
typedef struct List{
int *elem;
int length;
int listsize;
}SqList;
/* 构造一个空的线性表L */
int InitList(SqList *L){
L->elem =(int *)malloc(List_Init_Size*sizeof(int));
if (! L->elem ) exit(OVERFLOW);
L->length =0;
L->listsize =List_Init_Size;
return OK;
}
/*在顺序线性表L的第i个位置之前插入元素e*/
int ListInsert(SqList *L,int i,int e){
int *newbase,*p,*q;
if (i<1||i>L->length +1 ) return ERROR;
if(L->length >=L->listsize ){
newbase=(int *)realloc(L->elem ,(L->listsize +List_add)*sizeof(int));
if(!newbase) exit(OVERFLOW);
L->elem =newbase;
L->listsize +=List_add;
}
q=&(L->elem[i-1]);
for(p=&(L->elem[L->length -1]);p>=q;--p)
*(p+1)=*p;
*q=e;
++L->length ;
return OK;
}
/*输出顺序线性表L中的元素*/
void Display(SqList *L){
int *p;
for (p=L->elem ;p<=L->elem +L->length-1 ;++p)
printf("%3d ",*p);
printf("\n");
}
/* 在顺序线性表L中删除第i个元素,并用e返回其值*/
int ListDelete(SqList *L,int i,int *e)
{
int *p,*q;
if((i<1)||(i>L->length)) return ERROR;
p=&(L->elem [i-1]);
*e=*p;
q=L->elem +L->length -1;
for(++p;p<=q;++p)
*(p-1)=*p;
--L->length ;
return OK;
}
void main(){
SqList La,*L; int i,m,j,n;
L=&La;
InitList(L);
printf("输入10个数据元素:");
for(i=0;i<5;i++)
{ scanf("%d ",&m);
ListInsert(L,i+1,m);
}
Display(L);
printf("输入插入元素位置 \n");
scanf("%d ",&j);
printf("输入插入元素值 \n");
scanf("%d ",&n);
ListInsert(L,j,n);
Display(L);
}