#include#include #define MAXSIZE 5 typedef struct { int* data; int length; }SqList; //初始化顺序表 void InitList(SqList& L) { L.data = (int*)malloc(sizeof(int) * MAXSIZE); L.length = 0; return; } //求表长 int Length(SqList L) { return L.length; } //按值查找 int LocalElem(SqList L, int e) { for (int i = 0; i < L.length; i++) { if (L.data[i] == e) { return i+1; } } return -1; } //按位查找 int GetElem(SqList L, int i) { if (i<1 || i>L.length) return -1; return L.data[i - 1]; } //插入操作 bool ListInsert(SqList& L, int i, int e) { if (i<1 || i>L.length+1) return false; if (L.length >= 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 += 1; return true; } //删除操作 bool ListDelete(SqList& L, int i, int& e) { if (i<1 || i>L.length) return false; e = L.data[i - 1]; for (int j = i - 1; j < L.length; j++) { L.data[j] = L.data[j + 1]; } L.length -= 1; return true; } //输出操作 void PrintList(SqList L) { for (int i = 0; i < L.length; i++) { printf("%d", L.data[i]); if (i != L.length - 1) { printf(" "); } } } //判空操作 bool Empty(SqList L) { if (L.length == 0) return true; return false; } //销毁操作 bool DestroyList(SqList& L) { free(L.data); L.length = 0; return true; } int main() { SqList test; InitList(test); printf("表长为%dn", Length(test)); if (Empty(test)) { printf("表为空n"); } else { printf("表不为空n"); } int e, i; e = 100, i = 1; printf("插入元素%d,在List序列号为%dn", e, i); if (ListInsert(test, i, e)) printf("插入成功n"); else printf("插入失败n"); printf("结果:"); PrintList(test); printf("n"); e = 105, i = 2; printf("插入元素%d,在List序列号为%dn", e, i); if (ListInsert(test, i, e)) printf("插入成功n"); else printf("插入失败n"); printf("结果:"); PrintList(test); printf("n"); e = -13, i = 3; printf("插入元素%d,在List序列号为%dn", e, i); if (ListInsert(test, i, e)) printf("插入成功n"); else printf("插入失败n"); printf("结果:"); PrintList(test); printf("n"); e = 1054, i = 4; printf("插入元素%d,在List序列号为%dn", e, i); if (ListInsert(test, i, e)) printf("插入成功n"); else printf("插入失败n"); printf("结果:"); PrintList(test); printf("n"); e = 231, i = 5; printf("插入元素%d,在List序列号为%dn", e, i); if (ListInsert(test, i, e)) printf("插入成功n"); else printf("插入失败n"); printf("结果:"); PrintList(test); printf("n"); e = 6100, i = 6; printf("插入元素%d,在List序列号为%dn", e, i); if (ListInsert(test, i, e)) printf("插入成功n"); else printf("插入失败n"); printf("结果:"); PrintList(test); printf("n"); printf("表长为%dn", Length(test)); printf(""-13"的位置在第%d个n", LocalElem(test, -13)); printf("2号元素为%dn", GetElem(test, 2)); ListDelete(test, 1, e); printf("删除一号元素,其值为%dn", e); printf("结果:"); PrintList(test); printf("n"); if (DestroyList(test)) { printf("销毁表成功n"); } else { printf("销毁表失败n"); } return 0; }



