#include <stdio.h> #include<malloc.h> #define INIT_SIZE 100 #define LIST_INCRE 10 struct SqList{ int* pElem; int length; int listsize; }; typedef struct SqList SqList; SqList L; int init_SqList(SqList &L){ L.pElem=(int*)malloc(INIT_SIZE*sizeof(int)); L.length=0; L.listsize=INIT_SIZE; return 0; } int destroy_SqList(SqList &L){ free(L.pElem); L.length=0; L.listsize=0; } int clear_SqList(SqList &L){ L.length=0; free(L.pElem); } int insert_SqList(SqList &L,int i,int data){ if(i<0 || i>L.length) exit(-1); if(L.length>=L.listsize){ L.pElem=(int*)realloc(L.pElem,L.listsize+LIST_INCRE); } int* p=L.pElem+L.length-1; int* q=L.pElem+i; for(;p>=q;p--){ *(p+1)=*(p); } *q=data; L.length++; return 0; } int delete_SqList(SqList &L,int i){ if(i<0 || i>L.length-1) exit(-1); int* p=L.pElem+i; int* q=L.pElem+L.length-1; while(p<q){ *p=*(p+1); p++; } L.length--; } int show_SqList(SqList &L){ if(L.length==0) { printf("链表为空\n"); return 0; } int* p=L.pElem; int* q=L.pElem+L.length-1; while(p<=q){ printf("%d ",*p); p++; } printf("\n"); return 0; } int isEmpty_SqList(SqList &L){ if(L.length==0) return 1; else return 0; } int main(int argc, char *argv[]) { init_SqList(L); insert_SqList(L,0,34); insert_SqList(L,0,43); insert_SqList(L,0,1); show_SqList(L); delete_SqList(L,1); show_SqList(L); clear_SqList(L); show_SqList(L); return 0; }