1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165
| #include<stdio.h> #include<stdlib.h> #define MAX_SIZE 100
typedef struct SqList { int data[MAX_SIZE]; int length; }SqList;
//1.构造空的线性表 void InitList (SqList** L) { (*L) = (SqList*)malloc(sizeof(SqList)); (*L) -> length = 0; }
//2.销毁线性表 void DestroyList (SqList** L) { free(*L); *L = NULL; }
//3.判断线性表是否为空 int ListSpmty (SqList* L) { return L -> length == 0; }
//4.返回元素个数 int ListLength (SqList* L) { return L -> length; }
//5.打印元素数据 void DispList (SqList* L) { for(int i = 0; i < L -> length; i++) { printf("%d ",L -> data[i]); } printf("\n"); }
//6.返回第i个元素的数据 int GetElem (SqList* L, int loc, int* e) { if (loc < 0 || loc > L -> length) { return 0; } *e = L -> data[loc-1]; return 1; }
//7.判断位序 int LocateElem (SqList* L,int val) { for(int i = 0; i < L -> length; i++) { if (L -> data[i] == val) { return i+1; } } return 0; }
//8.插入数据 int ListSert(SqList* L, int loc, int val) { if (loc <= 0 || loc > L -> length + 1 || L ->length == MAX_SIZE) return 0; for(int i = L -> length ; i >= loc; i++) { L -> data[i] = L -> data[i-1]; } L -> data[loc-1] = val; L -> length++; return 1; }
//9.删除数据 int ListDelete(SqList* L, int loc, int* m) { if (loc <= 0 || loc > L -> length + 1) return 0; int j=0; for(int i = 0 ; i < L -> length; i++) { if(i != loc) { L -> data[j++] = L ->data[i]; } else { *m = L -> data[i]; } } L -> length--; return 1; }
int main () { SqList* list; //1生成空表 1 InitList(&list); //2插入数据 1 int num[5] = {1, 2, 3, 4, 5}; for (int i = 0; i < 5; i++) { ListSert(list, i+1, num[i]); } //3打印 1 DispList(list); //4删除数据 1 // int m; // if(ListDelete(list, 2, &m)) // { // printf("被删除的数据:%d\n", m); // printf("当前线性表为:"); // DispList(list); // }
//5判断是否为空表 1 // if (ListSpmty(list)) // { // printf("空表\n"); // } // else // { // printf("非空\n"); // }
//6打印元素个数 1 // printf("有%d个元素\n",ListLength(list));
//7返回第i个数数据 1 // int e; // if (GetElem(list, 3, &e)) // { // printf("e:%d\n",e); // }
//8判断位序 1 // int w = LocateElem(list, 3); // printf("%d\n",w); //9销毁表 1 // DestroyList(&list); // if(list==NULL) // { // printf("1\n"); // } system("pause"); return 0; }
|