c语言描述简单的线性表,获取元素,删除元素,
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 || i<i || i>L.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;k<L->length;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
简单的线性表增删,本人是菜鸟,有什么问题请评论,我真的希望大家能给点指点,谁也是从菜鸟开始的,
做技术的没有什么好嘲笑的,技术的东西是永远学不完的,日新月异。
技术靠一点一点积累的,大牛也是這样,
希望我也能加油。
博客园的文章都是大学时写的,质量不太好。
我的新文章都会发布再新的 blog :https://blog.biyongyao.com
请大家关注哟!!