动态顺序表
1 #include <cstdio> 2 #include <conio.h> 3 #include <windows.h> 4 #define MaxSize 10 5 typedef int ElemType; //把int定义为ElemType 6 typedef struct 7 { 8 int *elem; 9 int length; 10 int listsize; 11 }Sqlist; 12 13 void initSqlist(Sqlist *L) 14 { 15 L->elem=(int*)malloc(MaxSize*sizeof(ElemType)); 16 if(!L->elem) exit(0); 17 L->length=0; //当前长度 18 L->listsize=MaxSize; //最大长度 19 } 20 21 void InsertElem(Sqlist *L,int i,ElemType item) //i:插入位置,item:元素 22 { 23 ElemType *base,*insertPtr,*p; 24 if(i<1 || i>L->length+1) exit(0); 25 if(L->length>=L->listsize) 26 { 27 base=(ElemType*)realloc(L->elem,(L->listsize+10)*sizeof(ElemType)); 28 L->elem=base; 29 L->listsize=L->listsize+10; 30 } 31 insertPtr=&(L->elem[i-1]); 32 for(p=&(L->elem[L->length-1]);p>=insertPtr;p--) 33 *(p+1)=*p; 34 *insertPtr=item; 35 L->length++; 36 } 37 38 void DelElem(Sqlist *L,int i) 39 { 40 ElemType *delItem,*q; 41 if(i<1 || i>L->length) exit(0); 42 delItem=&(L->elem[i-1]); 43 q=L->elem+L->length-1; 44 for(++delItem;delItem<=q;++delItem) 45 *(delItem-1)=*delItem; 46 L->length--; 47 } 48 int main() 49 { 50 Sqlist l; 51 int i; 52 initSqlist(&l); //初始化顺序表 53 for(i=0;i<15;i++) 54 InsertElem(&l,i+1,i+1); //向顺序表中插入1~15 55 printf("\nThe content of the list is\n"); 56 for(i=0;i<l.length;i++) 57 printf("%d ",l.elem[i]); 58 59 DelElem(&l,5); //删除第5个元素 60 printf("\nDelete the fifth element\n"); 61 for(i=0;i<l.length;i++) 62 printf("%d ",l.elem[i]); 63 64 system("pause"); 65 return 0; 66 }
——现在的努力是为了小时候吹过的牛B!!