c++实现顺序表

来源:互联网 发布:软件系统销售合同范本 编辑:程序博客网 时间:2024/06/04 19:04
//学习数据结构中所写,本人代码能力有限,如有不当,欢迎大家指出吐舌头
#include <iostream>using namespace std;#define MAX_SIZE 20#define OK 1#define ERROR 0typedef int Status;typedef int ElemType;   // 元素类型可以改变,假定这里为intclass 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;}}


原创粉丝点击