#include<stdio.h>
#include<windows.h>
#define list_init_size 100 //线性表的存空间的初始量
#define listaddsize 10 //线性表存储空间的增量
typedef struct xianxingbiao{
int *elem; //存储空间的首地址
int length; //当前长度
int listsize; //当前分配量的存储容量,以sizeof(int)为单位的
}sqlist;
int initlist(sqlist *L);
int listinsert_sq(sqlist *L,int i,int e);
int listdelete_sq(sqlist *L,int i);
int initlist(sqlist *L)
{
//构造一个空的线性表
L->elem=(int*)malloc(list_init_size*sizeof(int));
if(!L->elem) //存储分配失败
exit(-1);
L->length=0; //空表长度为0
L->listsize=list_init_size;
return 0;
} //initlistsq
int listinsert_sq(sqlist *L,int i,int e) //在顺序线性表L中的第i个位置插入元素e,i的合法区间1<=i<=L.lengthsq(L)+1
{
int *p,*q,*newbase;
if(i<1||i>L->length+1) //i值不合法
return -1;
if(L->length>=L->listsize) //当前的存储空间满了
{
newbase=(int*)realloc(L->elem,(L->listsize+listaddsize)*sizeof(int));
if(!newbase)
exit(-1); //储存分配失败
L->elem=newbase; //新基址
L->listsize+=listaddsize; //增加的存储量
}
q=&L->elem[i-1]; //q是插入的位置
for(p=&(L->elem[L->length-1]);p>=q;--p)
*(p+1)=*p; //插入后元素右移
*q=e; //插入e
++L->length;
return 0;
}
int listdelete_sq(sqlist *L,int i) //在顺序线性表L中删除第i个位置元素,并且用e返回,i的合法区间1<=i<=L.lengthsq(L)
{
int *p,*q;
int e;
if(i<1||i>L->length+1) //i值不合法
return -1;
p=&(L->elem[i-1]); //p为被删除的元素
e=*p; //被删除的元素赋值给e
q=L->elem+L->length-1; //表尾位置
for(++p;p<=q;++p)
*(p-1)=*p; //被删除元素后元素左移
--L->length;
return e; //把删除元素给返回出来
}
int main()
{
int d;
sqlist *a;
initlist(sqlist *a);
listinsert_sq(sqlist *a,int 1,int 2);
d=listdelete_sq(sqlist *a,int 1,int e);
printf("%d",d);
return 0;
}
会报错:E:\练习\c练习\2021.4.3.c|61|error: expected expression before 'sqlist'|
不懂哪错了