#include#include#define InitSize 10typedef struct { int *data; int MaxSize; int length;}SqList;void InitList(SqList &L);void IncreaseSize(SqList &L, int len);bool ListInsert(SqList &L, int i, int e);int GetElem(SqList L, int i);int LocateElem(SqList L, int e);bool ListDelete(SqList &L, int i, int e);void ListShow(SqList L);int main() { SqList L; InitList(L); bool quit = false; while (!quit) { printf("请输入你想要的一个操作,按0退出\n"); printf("1.插入数据\n"); printf("2.删除数据\n"); printf("3.按值查找位置\n"); printf("4.按序号查找数据\n"); printf("5.扩展数组容量\n"); printf("6.查看数组\n"); int a = 0; scanf_s("%d", &a); switch (a) { case 0: quit = true; break; case 1: { int i = 0; printf("请输入你想插入的位置:"); scanf_s("%d", &i); int e = 0; printf("请输入你想插入的数:"); scanf_s("%d", &e); if (ListInsert(L, i, e)) { printf("插入成功!!!\n"); } else { printf("插入失败!!!\n"); } break; } case 2: { int i = 0; printf("请输入你想删除的位置:"); scanf_s("%d", &i); int e = 0; if (ListDelete(L, i, e)) { printf("删除成功!!!"); } else { printf("删除失败!!!"); } break; } case 3: { printf("请输入您要找的数"); int e = 0; scanf_s("%d", &e); printf("您要找到数的位置在%d\n", LocateElem(L, e)); break; } case 4: { printf("请输入您要找的数的序号"); int i = 0; scanf_s("%d", &i); printf("您要找的序号的数是%d\n", GetElem(L, i)); break; } case 5: { int num = 0; printf("请输入你想扩展数组的容量:"); scanf_s("%d", &num); IncreaseSize(L, num); printf("当前容量为%d\n", L.MaxSize); break; } case 6: ListShow(L); break; } }}void InitList(SqList &L) { L.data = (int *)malloc(InitSize*sizeof(int)); L.length = 0; L.MaxSize = InitSize;}void IncreaseSize(SqList &L, int len) { int *p = L.data; L.data = (int *)malloc((L.MaxSize + len)*sizeof(int)); for (int i = 0; i < L.length; i++) { L.data[i] = p[i]; } L.MaxSize = L.MaxSize + len; free(p);}bool ListInsert(SqList &L, int i, int e) { if (i<1 || i>L.length + 1) return false; if (L.length >= L.MaxSize) return false; for (int j = L.length; j > i; j--) { L.data[j] = L.data[j - 1]; } L.data[i - 1] = e; L.length++; return true;}int GetElem(SqList L, int i) { return L.data[i - 1];}int LocateElem(SqList L, int e) { for (int i = 0; i < L.length; i++) { if (L.data[i] == e) return i + 1; } return 0;}bool ListDelete(SqList &L, int i, int e) { if (i<1 || i>L.length) return false; e = L.data[i - 1]; printf("删除元素为%d\n", e); for (int j = i; j < L.length; j++) { L.data[j - 1] = L.data[j]; } L.length--; return true;}void ListShow(SqList L) { for (int i = 0; i < L.length; i++) { printf("data[%d]=%d\n", i, L.data[i]); }}