哪位大神能帮我改一下这个程序 的错误 并且 表明为什么错了,我自己看不懂那是什么错误 谢谢~~~~~~~~
#include
#include
#include
#define list_init_size 100
#define increment 10
typedef struct{
int *elem;
int length;
int listsize;
}sqlist;
int initlist_sq(sqlist &L)
{
L.elem=(int *)malloc(list_init_size *sizeof(int));
if(!L.elem) exit(-1);
L.length=0;
L.listsize=list_init_size;
return 1;
}
int create(sqlist &L)
{
int m,i;
printf("输入线性表的长度:");
scanf("%d",&m);
if(m>listsize) printf("m的数值太大");
for(i=1;i<m;i++)
{
scanf("%d",&L.elem[i-1]);
}
L.length=m;
return 1;
}
int insert(sqlist &L,int i,int x)
{
int *newbase
if(iL.length+1)
return 0;
if(L.length>=L.listsize)
{ newbase=(int *)realloc(L.elem,(L.listsize+increment)*sizeof(int));
L.elem=newbase;
L.listsize+=increment;}
int *q,*p;
q=&L.elem[i-1];
for(p=&L.elem[length-1];p>=q;--p)
{
*(p+1)=*p;
}
*q=e;
++L.length;
return 1;
}
int delete(sqlist &L,int i,int &e)
{
int *q,*p;
if(iL.length) return 0;
p=&L.elem[i-1];
e=*p;
q=L.elem+L.length-1;
for(++p;p<=q;++p)
{
*(p-1)=*p;
}
--L.length;
return 1;
}
int location(sqlist L,int e)
{
int i=1;
int *p;
p=L.elem;
while(i<=L.length)
{
if(e=*p++)
printf("%d",i);
else
i++;
}
if(i<=L.length ) return(i);
else return 0;
}
void printl(sqlist &L)
{
int i;
for(i=0;i<(L.length-1);i++)
{
printf("%4d",L.elem[i]);
}
printf("\n");
}
int main()
{
sqlist *la;
initlist_sq(la);
create(la);
int m,n;
printf("输入要插入的数的位置和数值\n");
scanf("%d%d",&m,&n);
insert(la,m,n);
printl(la);
int x;
printf("输入要删除的数的位置\n");
scanf("%d",&x) ;
delete(la,x);
printl(la);
int y;
printf("输入要查找的数值\n");
scanf("%d",&y);
location(la,y);
printl(la);
return 0;
}