数据结构查找删除操作哪里出错了
#include<stdio.h>
#include<malloc.h>
#define ERROR 0
#define OK 1
#define INIT_SIZE 100
#define INCREM 10
typedef int ElemType;
typedef struct Sqlist{
ElemType *slist;
int length;
int listsize;
}Sqlist;
int InitList_sq(Sqlist *L);
int CreateList_sq(Sqlist *L,int n);
int ListInsert_sq(Sqlist *L,int i,ElemType e);
int PrintList_sq(Sqlist *L);
int ListDelete_sq(Sqlist *L,int i,ElemType *e);
int ListLocate(Sqlist *L,ElemType e,int *pos);
int InitList_sq(Sqlist *L){
L->slist = (ElemType *)malloc(INIT_SIZE*sizeof(ElemType));
if(!L->slist)return ERROR;
L->length = 0;
L->listsize = INIT_SIZE;
return OK;
}
int CreateList_sq(Sqlist *L,int n){
int i = 0;
for(;i<n;i++)
scanf("%d",&L->slist[i]);
L->length += n;
return OK;
}
int PrintList_sq(Sqlist *L){
int i=0;
if(L->length==0)return ERROR;
for(;i<L->length;i++)
printf("%d ",L->slist[i]);
printf("\n");
return OK;
}
int ListInsert_sq(Sqlist *L,int i,ElemType e){
int k;
if(i<1||i>L->length+1) return ERROR;
if(L->length==L->listsize){
L->slist = (ElemType *)realloc(L->slist,(L->listsize+INCREM)*sizeof(ElemType));
if(!L->slist) return ERROR;
L->listsize += INCREM;
}
for(k=L->length-1;k>=i-1;k--)
L->slist[k+1] = L->slist[k];
L->slist[i-1] = e;
L->length++;
return OK;
}
int ListLocate(Sqlist *L,ElemType e,int *pos){
int i=0;
for(;i<L->length;i++){
if(L->slist[i]==e)
{
*pos = i;
break;
}
}
if(i>=L->length)
return ERROR;
else
return OK;
}
int ListDelete_sq(Sqlist *L,int i,ElemType *e){
int j;
if(i<1||i>L->length) return ERROR;
*e=L->slist[i-1];
for(j=i;j<L->length;j++)
L->slist[j-1]=L->slist[j];
L->length--;
return OK;
}
int main(void){
Sqlist L;
ElemType *e1;
int *pos;
if(!InitList_sq(&L))
printf("初始化失败!\n");
else
printf("初始化cg!\n");
if(!CreateList_sq(&L,5))
printf("创建失败!");
else
printf("创建cg!\n");
if(!PrintList_sq(&L))
printf("没有元素!");
if(!ListInsert_sq(&L,4,10))
printf("插入位置不准确");
if(!PrintList_sq(&L))
printf("没有元素!");
if(!ListLocate(&L,4,pos))
printf("没有此元素");
else
printf("元素位置为%d",(*pos)+1);
if(ListDelete_sq(&L,2,e1)){
if(!PrintList_sq(&L))
printf("没有元素!");
}
}