顺序表的基本操作:定义、初始化、插入、删除、按值查找、按位查找、打印顺序表、打印表长
一、代码
#include#include #define Initsize 10 using namespace std; //定义顺序表 typedef struct { int* data; int length; int Maxsize; }SeqList; //初始化顺序表 void InitList(SeqList& L) { L.data = (int*)malloc(Initsize * sizeof(int)); for (int i = 0; i < Initsize; i++) { L.data[i] = 0; } L.length = 0; L.Maxsize = Initsize; cout << "初始化成功..." << endl; } //插入数据 void ListInsert(SeqList& L, int i, int e) { if (L.length >= L.Maxsize) { cout << "插入失败,表已满..." << endl; return; } if (i > L.length + 1 || i < 1) { cout << "插入位置不合法..." << endl; return; } for (int j = L.length; j >= i; j--) { L.data[j] = L.data[j - 1]; } L.data[i - 1] = e; L.length++; cout << "插入成功..." << endl; } //删除数据 int ListDelete(SeqList& L, int i) { int e=9999; if (L.length <= 0) { cout << "删除失败,表是空的..." << endl; } else if (i > L.length + 1 || i < 1) { cout << "删除位置不合法..." << endl; } else { e = L.data[i - 1]; for (int j = i; j < L.length; j++) { L.data[j] = L.data[j + 1]; } L.data[L.length - 1] = 0; L.length--; cout << "删除成功..." << endl; } return e; } //按值查找 int LocateElem(SeqList L, int e) { int i = 9999; for (int j = 0; j < L.length; j++) { if (e==L.data[j]) { i = j; break; } } return i; } //按位查找 int GetElem(SeqList L, int i) { int e = 9999; if (L.length <= 0) { cout << "查询失败,表是空的..." << endl; } else if (i > L.length + 1 || i < 1) { cout << "查找位置不合法..." << endl; } else { e = L.data[i - 1]; } return e; } //打印顺序表 void PrintList(SeqList L) { cout << "当前顺序表:" << endl; for (int i = 0; i < L.length; i++) { cout << "L.data[" << i << "] = " << L.data[i] << endl; } } //打印顺序表长度 void Length(SeqList L) { cout << "当前顺序表长度: " << L.length << endl; } //菜单 void menu(SeqList &L) { int n, e, i; do { cout << "tt顺序表操作菜单tt" << endl; cout << "tt1.初始化tt" << endl; cout << "tt2.插入数值tt" << endl; cout << "tt3.打印表tt" << endl; cout << "tt4.打印表长度tt" << endl; cout << "tt5.删除元素tt" << endl; cout << "tt6.按值查找元素tt" << endl; cout << "tt7.按位查找元素tt" << endl; cout << "tt8.退出tt" << endl; cout << "请输入序号:" << endl; cin >> n; switch (n) { case 1:InitList(L);//初始化顺序表 break; case 2: cout << "请输入你要插入的位置和数值" << endl; cin >> i >> e; ListInsert(L, i, e); break; case 3:PrintList(L); break; case 4:Length(L); break; case 5: cout << "请输入你要删除的位置" << endl; cin >> i; e = ListDelete(L, i); if (e == 9999) { break; } cout << "已删除 L.data[" << i - 1 << "] = " << e << endl; break; case 6: cout << "请输入你要查找的数值" << endl; cin >> e; i = LocateElem(L, e); if (i != 9999) { cout << "已查出 L.data[" << i << "] = " << e << endl; } else { cout << "未找到..." << endl; } break; case 7: cout << "请输入你要查找的位置" << endl; cin >> i; e = GetElem(L, i); if (e != 9999) { cout << "已查出 L.data[" << i-1 << "] = " << e << endl; } else { cout << "未找到..." << endl; } break; case 8: return ; default: cout << "输入错误" << endl; break; } } while (true); } int main() { SeqList L;//创建数据表 menu(L); cout << "程序已结束运行..."; return 0; }



