c語言的線性表,還沒有完善
1 #include<stdio.h> 2 #define MAXSIZE 100 //初始空間分配量 3 #define OK 1 4 #define ERROR 0 5 #define TRUE 1 6 #define FALSE 1 7 typedef int ElemType; //類型為int 8 typedef int Status;//函數的返回類型,此處為int 9 typedef struct 10 { 11 ElemType data[MAXSIZE]; 12 int length; 13 }SqList; 14 /*用e返回獲取的函數值,當i超出線性表范圍,則返回ERROR*/ 15 Status GetElem(SqList L,int i,ElemType *e) 16 { 17 if(L.length==0||i<1||i>L.length) 18 return ERROR; 19 *e=L.data[i-1]; 20 return OK; 21 } 22 Status LisrInsert(SqList *L,int i,ElemType e)//插入元素操作 23 { 24 int k; 25 if(L->length==MAXSIZE)//線性表已滿 26 return ERROR; 27 if(i<1||i>L->length)//當i不在范圍內 28 { 29 return ERROR; 30 } 31 if(i<=L->length)//插入的數據不在表尾 32 { 33 for(k=L->length-1;k>=i-1;k--)//將插入位置後的數據元素向後移一位 34 L->data[k+1]=L->data[k]; 35 } 36 L->data[i-1]=e;//將新元素插入 37 L->length++; 38 return OK; 39 } 40 /*結果,刪除L的第i個元素,並用e返回值,L的長度減一*/ 41 Status ListDelete(SqList *L,int i,ElemType *e) 42 { 43 int k; 44 if(L->length==0)//線性表為空 45 return ERROR; 46 if(i<1||i>L->length)//刪除位置不正確 47 return ERROR; 48 *e=L->data[i-1]; 49 if(i<L->length)//如果刪除的不是最後的位置 50 { 51 for(k=i;k<L->length;k++)//將刪除位置後繼元素前移 52 L->data[k-1]=L->data[k]; 53 54 } 55 L->length--; 56 return OK; 57 58 } 59 /* 初始化順序線性表 */ 60 void InitList(SqList *L) 61 { 62 L->length=0; 63 64 }