#include <iostream> using namespace std; #define MAX_SIZE 20 #define OK 1 #define ERROR 0 typedef int Status; typedef int ElemType; // 元素类型可以改变,假定这里为int class sqList { private: ElemType data[MAX_SIZE]; int length; public: // 获取、插入、删除三个基本操作 ElemType getElem(ElemType &e, int pos); Status insertElem(ElemType e, int pos); Status deleteElem(ElemType &e, int pos); int getLength(){ return length; } void initList(); // 初始化列表,默认设置前五个元素 }; ElemType sqList::getElem(ElemType &e,int pos) { if (pos > length||pos<1 || pos>length) // 顺序表为空或pos不合法 return ERROR; e = data[pos - 1]; return OK; } Status sqList::insertElem(ElemType e, int pos) { if (length == MAX_SIZE - 1) // 表中元素已满 return ERROR; if (pos < 1 || pos>length + 1) // pos位置不合法 return ERROR; if (pos <= length) // 当插入位置不在表位 { for (int index = length - 1; index >= pos - 1; index--) { data[index + 1] = data[index]; } } data[pos - 1] = e; // 将元素插入 length++; return OK; } Status sqList::deleteElem(ElemType &e, int pos) { if (length == 0) // 表中无元素 return ERROR; if (pos<1 || pos>length) // pos不合法 return ERROR; e = data[pos - 1]; if (pos < length) // pos不在表尾 { for (int index = pos - 1; index <= length - 1; index++) { data[index] = data[index+1]; } } length--; return OK; } void sqList::initList() { length = 5; for (int i = 0; i < length; i++) { data[i] = i + 1; } } int main() { sqList list; list.initList(); cout << "初始化成功" << endl; ElemType e; for (int i = 0; i < list.getLength(); i++) { list.getElem(e, i + 1); cout << "第" << i + 1 << "个元素为:" << e << endl; } cout << "请输入要删除的元素的位置:"; int pos; cin >> pos; if (list.deleteElem(e, pos)) { cout << "删除的元素为" << e << endl; cout << "插入后列表信息如下:" << endl; for (int i = 0; i < list.getLength(); i++) { list.getElem(e, i + 1); cout << "第" << i + 1 << "个元素为:" << e << endl; } } else { cout << "删除失败" << endl; } cout << "请输入要插入的元素和插入的位置:"; cin >> e>>pos; list.insertElem(e, pos); cout << "插入后列表信息如下:" << endl; for (int i = 0; i < list.getLength(); i++) { list.getElem(e, i + 1); cout << "第" << i + 1 << "个元素为:" << e << endl; } }
c++实现顺序表
猜你喜欢
转载自blog.csdn.net/qq_37174526/article/details/78009751
今日推荐
周排行