1 #include <stdio.h> 2 #include <malloc.h> 3 #include <stdlib.h> 4 #define MaxSize 50 5 #define InitSize 100 6 typedef int ElemType; 7 typedef struct ...
1 #include <stdio.h> 2 #include <malloc.h> 3 #include <stdlib.h> 4 #define MaxSize 50 5 #define InitSize 100 6 typedef int ElemType; 7 typedef struct { 8 ElemType data[MaxSize]; //假定順序表的元素類型ElemType 9 int length; //順序表的當前長度 10 }SqList; //順序表的類型定義 11 12 //靜態分配。動態分配 13 14 typedef struct { 15 ElemType *data; //指定動態分配數組的指針 16 int length; //數組的最大容量和當前個數 17 }SeqList; //動態分配數組順序表的類型定義 18 //c:malloc,c++:new 19 20 21 //11 插入操作 i位置(1<=i<L.length+1) 22 bool ListInsert(SqList &L,int i,ElemType e){ 23 if(i<1||i>L.length+1) //判斷i的插入位置是否合法 24 return false; 25 if(L.length>=MaxSize) //判斷存儲空間是否已滿。滿則不插 26 return false; 27 for(int j=L.length;j>=i;j--) //開始是length-1~i,插入數據是i(j)~length-1+1 28 L.data[j]=L.data[j-1]; //i後元素後移 i==> 29 L.data[i-1]=e;//i位置插入 30 L.length++; 31 return true; 32 } 33 34 //22 刪除操作 i位置(1<=i<L.length)(範圍和插入不同) 35 bool ListDelete(SqList &L,int i,ElemType &e){ 36 if(i<1||i>L.length) 37 return false; 38 e=L.data[i-1];//i位置刪除,下標i-1+1後 即i後元素前移 i<== 39 for(int j=i;j<L.length;j++) //開始是length-1~i,插入數據是i(j)~length-1+1 40 L.data[j-1]=L.data[j]; //i 41 L.length--; 42 return true; 43 } 44 45 int main() 46 { 47 SqList L; 48 int i=0,e=0; 49 int flag=0; 50 L.length=0; 51 for(i=0;i<10;i++){ 52 L.data[i]=i;//賦初值 53 L.length++; //length不能丟 54 } 55 56 ListInsert(L,2,121);//i代表插入位置是從1開始,不要和數組下標混淆 57 ListInsert(L,3,2333); 58 ListDelete(L,3,e);//一次性操作 59 for(i=0;i<L.length;i++){ 60 printf("%d\t",L.data[i]); 61 } 62 return 0; 63