📄 sqlist1.c
字号:
#define OK 1
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
#define ERROR 0
#define OVERFLOW -2
#include<stdio.h>
typedef int Status;
typedef struct{
int * elem;
int length;
int listsize;
}SqList;
Status InitList_Sq(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;
}
Status ListInsert_Sq(SqList L,int i,int e){
int *p,*q,*newbase;
if(i<1||i>L.length+1) return ERROR;
if(L.length>=L.listsize){
newbase=(int *)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(int));
if(!newbase) exit(OVERFLOW);
L.elem=newbase;
L.listsize+=LISTINCREMENT;
}
q=&(L.elem[i-1]);
for(p=&(L.elem[L.length-1]);p>=q;--p)
*(p+1)=*p;
*q=e;
++L.length;
return OK;
}
Status GetElem(SqList L,int i,int*e){
int *p;
if((i<1)||(i>L.length)) return ERROR;
p=&(L.elem[i-1]);
*e= *p;
return OK;
}
Status ListDelete_Sq(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;
}
Status DestroyList_Sq(SqList L){
if(!L.listsize) return OK;
free(L.elem);
L.length=0;
return OK;
}
void main()
{
SqList L;
int a,b,c,d,m,n,e,i,u;
a=InitList_Sq(L);
printf("a=%d\n",a);
for(i=1;i<=20;i++)
L.elem[i-1]=i;
for(i=0;i<=19;i++)
printf("%d ",L.elem[i]);
printf("\n");
b=ListInsert_Sq(L,6,21);
printf("b=%d\n",b);
for(i=0;i<=20;i++)
printf("%d ",L.elem[i]);
printf("\n");
c=GetElem(L,7,&m);
printf("c=%d\n",c);
printf("m=%d\n",m);
d=ListDelete_Sq(L,4,&n);
printf("d=%d\n",d);
for(i=0;i<=19;i++)
printf("%d ",L.elem[i]);
printf("\n");
printf("n=%d\n",n);
e=DestroyList_Sq(L);
printf("e=%d\n",e);
L.elem=NULL;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -