当前位置: 首页 > news >正文

手写简单的int类型顺序表

顺序表

是简单的一种线性结构,逻辑上相邻的数据在计算机内的存储位置也是相邻的,可以
快速定位第几个元素,中间不允许有空值,插入、删除时需要移动大量元素。

顺序表的三个要素:

  1. 用 elems 记录存储位置的基地址
  2. 分配一段连续的存储空间 size
  3. 用 length 记录实际的元素个数,即顺序表的长度

参考代码如下

#include <iostream>using namespace std;#define MAX_SIZE 100typedef struct {int* elems; //顺序表头指针int length; //顺序表中元素个数int size;  //顺序表的容量
}SqList;bool initList(SqList& L) {L.elems = new int[MAX_SIZE];if (L.elems == NULL) { return false; }L.length = 0;L.size = MAX_SIZE;
}void printList(SqList& L) {string str(80, '-');cout << str << endl; //分割线cout << "顺序表的空间:"<<L.size << endl;cout << "顺序表存储元素个数:"<<L.length << endl;cout << "表中数据: ";for (int i = 0; i < L.length; i++) {cout << L.elems[i] << "  ";}cout << endl;
}
//添加元素
bool addList(SqList& L,int n) {if (L.length == L.size) { return false; }//顺序表满L.elems[L.length] = n;L.length++;return true;
}
//插入元素
bool insertList(SqList& L,int i,int num){if (i<0 || i>L.length) { return false; } //下标越界无效if (L.length == L.size) { return false; } //顺序表满for (int j = L.length - 1; j >= i; j--) {L.elems[j + 1] = L.elems[j];  //插入位置与后面的数据后移}L.elems[i] = num;L.length++;return true;
}
//删除元素
bool deleteList(SqList& L, int i) {//当下标越界,表中无元素时 均无法进行删除操作if (i < 0 || i >= L.length) { return false; } //当删除的是最后一个元素时if (i == L.length - 1) {L.length--;return true;}for (int j = i; j < L.length; j++) {L.elems[j] = L.elems[j + 1];}L.length--;return true;
}void destroyList(SqList& L) {if (L.elems) { delete[] L.elems; }L.length = 0;L.size = 0;
}int main() {SqList sqlist;if (initList(sqlist)) {cout << "初始化成功!" << endl;}else {cout << "初始化失败!" << endl;}printList(sqlist);//添加元素int n; //添加元素的个数int num;  //添加的元素/*cout << "请输入要输入的元素个数:";cin >> num;for (int i = 0; i < num; i++) {cout << "请输入元素:";cin >> n;if (addList(sqlist, n)) {cout << "顺序表添加元素成功!" << endl;}else {cout << "顺序表添加元素失败!" << endl;}}*/for (int i = 0; i < 5; i++) { //便于测试addList(sqlist, i * 3 + 3);}printList(sqlist);//插入元素int i;//插入元素的下标cout << "输入插入元素的下标位置:";cin >> i;cout << "输入要插入的元素:";cin >> num;if (insertList(sqlist,i,num)) {cout << "插入顺序表成功!" << endl;}else {cout << "插入顺序表失败!" << endl;}printList(sqlist);//删除元素cout << "请输入要删除元素的下标:";cin >> i;if (deleteList(sqlist, i)) {cout << "删除元素成功!" << endl;}else {cout << "删除元素失败!" << endl;}printList(sqlist);//销毁顺序表destroyList(sqlist);printList(sqlist);system("pause");return 0;
}

文章转载自:

http://zaXk3Ooa.mrkbz.cn
http://t0UH7lMv.mrkbz.cn
http://UgYeabry.mrkbz.cn
http://lhu4KLIN.mrkbz.cn
http://wiUZpHjS.mrkbz.cn
http://nXKxgbFI.mrkbz.cn
http://lf9h4w8e.mrkbz.cn
http://5gbzrSvU.mrkbz.cn
http://3VoTbJA0.mrkbz.cn
http://vc3dKwPT.mrkbz.cn
http://KPviNFWv.mrkbz.cn
http://6gtY1yVG.mrkbz.cn
http://Dn3ZprRq.mrkbz.cn
http://9BwOuOUW.mrkbz.cn
http://ff8zyPWO.mrkbz.cn
http://ffxDf1Ky.mrkbz.cn
http://atE1OBOt.mrkbz.cn
http://4jXBvmsn.mrkbz.cn
http://3vSGq2nd.mrkbz.cn
http://BVGpBHvy.mrkbz.cn
http://iJyJSYcC.mrkbz.cn
http://QzQYQTyv.mrkbz.cn
http://EGYrouYm.mrkbz.cn
http://ooyorlCP.mrkbz.cn
http://3amHWFOg.mrkbz.cn
http://4ylruVmc.mrkbz.cn
http://XWO6bd4i.mrkbz.cn
http://pN2fl8mi.mrkbz.cn
http://VzyMbadb.mrkbz.cn
http://dq5WsxEZ.mrkbz.cn
http://www.dtcms.com/a/376264.html

相关文章:

  • Spring Boot 深入剖析:BootstrapRegistry 与 BeanDefinitionRegistry 的对比
  • [rStar] 解决方案节点 | `BaseNode` | `MCTSNode`
  • 鸿蒙:@Builder 和 @BuilderParam正确使用方法
  • 美图云修-一站式AI修图软件
  • 从齿轮到智能:机器人如何重塑我们的世界【科普类】
  • F12中返回的id里preview和response内容不一致的问题
  • 【CSS 3D 交互】实现精美翻牌效果:从原理到实战
  • vue二次封装ant-design-vue的table,识别columns中的自定义插槽
  • vue方法汇总
  • GPU硬件架构和配置的理解
  • C++类和对象初识
  • 笔记:乐鑫 (Espressif) 的生态策略与开发者悖论
  • SELinux策略:域转换与类型继承
  • 【VLMs篇】06:Cosmos-Reason1:从物理常识到具身推理
  • 图漾相机 FM851-E2 相关资料
  • 资产管理什么软件好
  • npm 安装命令中关于 @ 的讲解,如:npm install @vue-office/docx vue-demi
  • PowerBI 没实现的的联动同步下钻,QuickBI 实现了
  • k8s+jenkins+harbor构建Devops平台
  • 【中文教材】35. 证券市场指数
  • 36.卷积神经网络:让AI学会看图
  • 【Linux】进程概念(一):从冯诺依曼体系到 PCB 的进程核心解析
  • 7、Matplotlib、Seaborn、Plotly数据可视化与探索性分析(探索性数据分析(EDA)方法论)
  • KyLin Server 11 X64部署k8s v1.34.0
  • 【Redis】双写一致性及数据持久化
  • UE5全场景应用与核心优势解析 , 川翔云电脑渲染支持
  • 用deepseek对GPU服务器进行压力测试
  • day27|前端框架学习
  • YOLOv8 Linux 部署指南(GPU CPU 完整版)
  • 服务器都是用的iis, 前端部署后报跨域,不是用同一个服务器 是前端项目的服务器做Nginx转发,还是后端项目的服务器做Nginx转发?