#include<iostream> #define MaxSize 20 typedef int ElemType; typedef struct { ElemType *elem; int length; }SqList; bool InitList(SqList& L) { /* 初始化顺序表,分配空间。 */ L.elem = new int [MaxSize]; if (!L.elem) return false; L.length = 0; return true; } bool CreateList(SqList& L) { /* 插入数据构建顺序表 */ int x = 0, i = 0; while (x != -1){ if (L.length == MaxSize) { std::cout << "顺序表已经满了" << std::endl; return false; } std::cout << "请输入插入的元素" << std::endl; std::cin >> x; L.elem[i++] = x; L.length ++; } return true; } bool PrintList(SqList L) { /* 打印顺序表中的内容。 */ if (L.length == 0) return false; for (int i = 0; i < L.length; i++) { std::cout << L.elem[i] << std::endl; } return true; } bool GetElem(SqList L, int i, int& e) { // 从列表中取第i个值,并且返回到e中 if (i<1 || i>L.length) { return false; } e = L.elem[i - 1]; return true; } int LocateElem(SqList L, int e) { /* 输入需要查找的元素,返回该元素所在的索引值。 */ if (!L.elem) return false; for (int i = 1; i < L.length; i++) if (L.elem[i] == e) return i + 1; return -1; } bool ListInsert_Sq(SqList& L, int i, int e) { /* 向顺序表中插入一个值。 */ if (L.length == MaxSize) return false; for (int j = L.length; j > i; j--) L.elem[j] = L.elem[j - 1]; L.elem[i] = e; L.length++; return true; } bool ListDelete_Sq(SqList& L, int i, int& e) { /* 从顺序表中删除一个值。 */ if (i<1 || i >L.length) return false; e = L.elem[i]; for (int j = i; j < L.length; j++) L.elem[j] = L.elem[j + 1]; L.length--; return true; } int main() { SqList L; // 初始化顺序表 InitList(L); // 创建顺序表 CreateList(L); // 打印顺序表 PrintList(L); // 从表中取数 int number; int e; std::cout << "输入您要查找的序号" << std::endl; std::cin >> number; GetElem(L, number, e); std::cout << e << std::endl; // 从顺序表中查找 int index; int FindNumber; std::cout << "输入要查找的元素" << std::endl; std::cin >> FindNumber; index = LocateElem(L, FindNumber); if (index == -1) std::cout << "该顺序表中没有改元素" << std::endl; std::cout << index << std::endl; // 从顺序表中插入元素 int InsertIndex; int InsertElem; std::cout << "请输入您要插入的元素的位置" << std::endl; std::cin >> InsertIndex; std::cout << "请输入您要出入的元素" << std::endl; std::cin >> InsertElem; ListInsert_Sq(L, InsertIndex, InsertElem); PrintList(L); // 从顺序表中删除一个元素 int DeleteIndex; int DeleteElem; std::cout << "请输入您要删除元素的索引" << std::endl; std::cin >> DeleteIndex; DeleteElem = ListDelete_Sq(L, DeleteIndex, DeleteElem); std::cout << "删除的元素是" << DeleteElem << std::endl; return true; }