实现了线性表的获得元素,插入,删除,统计元素的功能。代码如下,初学者,学习罢了。
1 #include<stdio.h> 2 #define MAXSIZE 20 3 typedef int ElemType; /*定义基本类型,视具体情况而定*/ 4 5 typedef int Status; 6 #define OK 1 7 #define ERROR 0 8 #define FALSE 0 9 10 11 /*链表的顺序存储结构*/ 12 typedef struct 13 { 14 ElemType data[MAXSIZE]; /*数组用来存储数据元素*/ 15 int length; /*线性表的长度*/ 16 }SqList; 17 18 19 /*初始化,建立一个新的线性表*/ 20 SqList Initial(SqList list) /*一定注意:形式参数是不能够传递到实际参数的,需要返回值*/ 21 { 22 list.length = 10; /*如果需要将形参传递到实参中需要用指针或者return的方法*/ 23 for(int i = 0;i < 10;i++) 24 list.data[i] = i+1; 25 return list; 26 } 27 28 29 /*获得元素操作*/ 30 Status GetElem(SqList L,int i,ElemType e) 31 { 32 if(L.length == 0 || i < 1 || i > L.length ) 33 return ERROR; 34 e = L.data[i-1]; 35 printf("获得的元素为 %d ",e); 36 printf(" "); 37 return OK; 38 } 39 40 /*插入操作,需要插入的元素为e*/ 41 SqList ListInsert(SqList L,int i,ElemType e) 42 { 43 int k; 44 if(L.length >= MAXSIZE || i <= 0 || i > L.length) 45 //return ERROR; 46 printf("ERROR "); 47 else 48 { 49 for(k = L.length;k >= i-1;k--) 50 L.data[k+1] = L.data[k]; 51 L.data[i-1] = e; /*将元素插入*/ 52 L.length++; 53 return L; 54 } 55 56 } 57 58 /*删除操作,并且将删除的元素放入e中*/ 59 SqList ListDelete(SqList L,int i,ElemType e) 60 { 61 int k; 62 if(i <= 0 || L.length >= MAXSIZE || i > L.length ) 63 printf("ERROR "); 64 else 65 { 66 e = L.data[i-1]; 67 for(k = i;k <= L.length;k++) 68 { 69 L.data[k-1] = L.data[k]; 70 } 71 printf("删除的元素为%d ",e); 72 L.length--; 73 return L; 74 } 75 76 } 77 78 /*显示列表的长度和已有的元素*/ 79 void ListShow(SqList list) 80 { 81 printf("当前表的长度为: %d ",list.length); 82 if(list.length == 0) 83 printf("0 "); 84 else 85 { 86 printf("当前表的元素有: "); 87 for(int i = 1;i <= list.length;i++) 88 printf("%d ",list.data[i-1]); 89 } 90 printf(" "); 91 } 92 93 94 int main() 95 { 96 ElemType a; 97 SqList list; 98 list = Initial(list); 99 list = ListInsert(list,10,13); 100 ListShow(list); 101 list = ListDelete(list,10,a); 102 ListShow(list); 103 104 105 return 0; 106 }