1 //定义线性表 2 #define MAXSIZE 20 3 typedef int ElemType; 4 typedef struct 5 { 6 ElemType data[MAXSIZE]; //这是数组的长度,从0开始,也就是最大长度 7 int length; //这是线性表的长度,表示线性表已经存储了多少个元素 8 9 }SqList;10 /*11 ************************** 12 **************************13 */14 15 16 17 //返回线性表L的元素 18 typedef int Status;19 Status GetElem1 (SqList L,int i,ElemType *e)20 {21 if (L.length==0 || iL.length) 22 return -1; 23 24 *e = L.data[i-1];25 return 0; 26 }27 28 29 30 31 32 /*33 ************************** 34 **************************35 */ 36 37 38 //元素插入线性表39 Status ListInsert (SqList *L,int i,ElemType e)40 {41 int k;42 if (L->length == MAXSIZE) //表示线性表的最大长度已经等于数组的长度,线性表已经满 43 return -1; 44 45 if(i < 1 || i > L->length+1) //表示要插入的位置i 不在线性表的范围46 return -1;47 48 if (i <= L->length) //若要插入的位置不在线性表的尾端 49 for (k = L->length - 1;k >= i-1 ;k--) //就是插入位置后面的元素一个个往后面挪出一个位置,先是线性表最后一个元素挪 50 L->data[k+1] = L->data[k];51 52 L->data[i-1] = e; // 插入的i是相对于线性表来说的下标从1开始,data是数组,下标从0开始,所以辅助到i-1上 53 L->length++; //表示线性表的长度加上1 54 return 0; 55 } 56 57 58 /*59 ************************** 60 **************************61 */62 63 //元素删除 64 Status ListDelete(SqList *L,int i,ElemType *e)65 {66 int k;67 if (L->length ==0) //判断线性表是否为空 68 return -1;69 if (i>L->length || i<1) //判断要删除的元素是否在线性表中 70 return -1;71 *e = L->data [i-1]; //先把数组的数组拿出来赋值给e 72 73 if (i< L->length) 74 for (k=i;klength;k++) //直接把药删除的元素后面的元素直接往前移动 75 L->data[k-1]=L->data[k]; 76 77 L ->length --; //最后一步是把线性表的长度减去1 数组的长度不用减,英文已经用maxsize定义了。 78 79 } 80 81 82 int main()83 {84 return 0;85 }86 87
简单的线性表增删,本人是菜鸟,有什么问题请评论,我真的希望大家能给点指点,谁也是从菜鸟开始的,
做技术的没有什么好嘲笑的,技术的东西是永远学不完的,日新月异。
技术靠一点一点积累的,大牛也是這样,
希望我也能加油。