数据结构,c语言程序错误

数据结构,c语言程序错误
#include
#include
#define LIS 100
#define LISTINCEMENT 10

typedef struct{
int *elem;
int length;
int listsize;
}sqlist;

sqlist initsqlist(sqlist l){
l.elem=(int*)malloc(LIS*sizeof(int));
l.length=0;
l.listsize=LIS;
} //initsqlist

sqlist listinsert_sq(sqlist l,int i,int e){
int *p,*q;
int length;
if((i<1)||(i>l.length+1)) printf("error");
if(l.length>=l.listsize){
l.elem=(int*)malloc((l.listsize+LISTINCEMENT)*sizeof(int));
l.listsize+=LISTINCEMENT;
}
q=&(l.elem[i-1]);
for(p=&(l.elem[length-1]);p>=q;--p) *(p+1)=*p;
*q=e;
++l.length;
printf("ok");
} //listinsert_sq

sqlist listdelete_sq(sqlist l,int i,int e){
int *p,*q;
if((i<1)||(i>l.length)) printf("error");
p=&(l.elem[i-1]);
e=*p;
q=l.elem+l.length-1;
for(++p;p<=q;++p) *(p-1)=*p;
--l.length;
printf("ok");;
} //listdelete_sq

void main(){
int n;
sqlist l;
l=initsqlist(l);
printf("输入n的值:");
scanf("%d",&n);
printf("l.length=%d",n);
printf("输入:");
for(i=0;i<=n;i++)
scanf("%d",&l.elem[i]);
printf("%d",l.elem[i]);
printf("请输入要插入的位置:");
scanf("%d",&a);
printf("请输入e的值:");
scanf("%d",&e);
l=listinsert_sq(l,a,e);
printf("插入后%d",l.elem[i]);
for(i=0;i<=n;i++)
scanf("%d",l);
printf("%d",l);
printf("请输入要删除的位置:");
scanf("%d",&b);
l=listdelete_sq(l,b,e);
printf("删除后%d",l.elem[i]);
}
for(p=&(l.elem[length-1]);p>=q;--p) *(p+1)=*p;
这句话你得确保length>1,但你在main函数里没有给length赋值衫历,初兆帆始化是或猜搜length=0,肯定会错的。
← 上一篇: 下一篇: →