【c++学习】数据结构中的顺序表

c++顺序表

  • 数据结构中的顺序表
    • 代码

数据结构中的顺序表

顺序表强调数据的存储结构,表示数据在内存中连续存储。(线性表与链表相对,链表数据在内存中的存储空间是不连续的)

代码

下述代码实现了线性表及其接口
包括增、删、查、改以及其他一些简单的功能

#include <iostream>using namespace std;#define eleType int//可更改线性表的数据类型//定义线性表
struct SequentialList{eleType *elements;int size;int capacity;
};//初始化线性表(分配内存空间)
void initializeList(SequentialList *list, int capacity){list->elements = new eleType[capacity];list->size = 0;list->capacity = capacity;}//删除整个线性表
void destoryList(SequentialList *list){delete[] list->elements;
}//线性表大小(注意区分线性表的大小和容量)
int size(SequentialList *list){return list->size;
}//判断是否为空
bool isEmpty(SequentialList *list){return list->size == 0;
}//线性表插入
void insert(SequentialList *list, int index, eleType value){if(index < 0 || index > list->size ) {//插入的位置索引是否合理throw std::invalid_argument("invalid index");}if(list->size == list->capacity){//若容量不够需要扩容int newCapacity = 2 * list->capacity;eleType *newElements = new eleType[newCapacity];for(int i = 0; i < list->size; i++) {newElements[i] = list->elements[i];}delete[] list->elements;list->elements = newElements;list->capacity = newCapacity;}for(int i = list->size; i > index; i--){list->elements[i] = list->elements[i-1];}list->elements[index] = value;//插入list->size ++;
}//线性表删除某个元素
void deleteElement(SequentialList *list, int index){if(index < 0 || index >= list->size ) {throw std::invalid_argument("invalid index");}for(int i = index; i< list->size-1; i++){list->elements[i] = list->elements[i+1];}list->size--;
}//通过数据查找索引
int findElement(SequentialList *list, eleType value){for(int i = 0; i <= list->size-1; i++){if(list->elements[i] == value){return i;}}return -1;
}//通过索引查找数据
eleType getElement(SequentialList *list, int index){if(index < 0 || index >= list->size ) {throw std::invalid_argument("invalid index");}return list->elements[index];
}//更改线性表的某数据
void updateElement(SequentialList *list, int index, eleType value){if(index < 0 || index >= list->size ) {throw std::invalid_argument("invalid index");}list->elements[index] = value;
}//打印线性表的数据
void printList(SequentialList *list){for(int i = 0; i < list->size; i++){cout << list->elements[i] << " ";}cout << endl;
}int main()
{SequentialList myList;initializeList(&myList,10);for(int i=0; i<10; i++){insert(&myList,i,i*10);}printList(&myList);cout << size(&myList) << endl;cout << findElement(&myList,80) << endl;cout << getElement(&myList,4) << endl;insert(&myList,1,100);printList(&myList);deleteElement(&myList,2);printList(&myList);updateElement(&myList,3,10000);printList(&myList);return 0;
}

于 2024-01-23 第一次整理编写

学习时整理,不当之处烦请指正
码字不易,留个赞再走吧

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/645294.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《游戏-01_3D-开发》之—人物动画控制器

创建变量&#xff0c; 创建线&#xff0c; 连接&#xff0c; 选中线会变为蓝色&#xff0c;新增变量&#xff0c; 设置线&#xff0c; 双击子层进入子层&#xff0c; 创建变量&#xff0c; 双击SkillPanel 拖拽好之后返回上一层&#xff0c; 依次连接&#xff0c; 设置线&#…

解释LoRA参数

目录 LoRA参数含义 LoRA在深度学习中的作用 示例代码中的LoRA应用 结论 LoRA参数含义 LoRA (lora_r): LoRA代表"Low-Rank Adaptation"&#xff0c;是一种模型参数化技术&#xff0c;用于在不显著增加参数数量的情况下调整预训练模型。lora_r参数指的是LoRA中的秩&…

[Tomcat] [从安装到关闭] MAC部署方式

安装Tomcat 官网下载&#xff1a;Apache Tomcat - Apache Tomcat 9 Software Downloads 配置Tomcat 1、输入cd空格&#xff0c;打开Tomca目录&#xff0c;把bin文件夹直接拖拉到终端 2、授权bin目录下的所有操作&#xff1a;终端输入[sudo chmod 755 *.sh]&#xff0c;回车 …

springboot(ssm干洗店预约洗衣系统 衣物清洗预约系统Java系统

springboot(ssm干洗店预约洗衣系统 衣物清洗预约系统Java系统 开发语言&#xff1a;Java 框架&#xff1a;springboot&#xff08;可改ssm&#xff09; vue JDK版本&#xff1a;JDK1.8&#xff08;或11&#xff09; 服务器&#xff1a;tomcat 数据库&#xff1a;mysql 5.7…

docker: 搭建 harbor 镜像仓库

harbor 企业级内网镜像管理软件&#xff0c;加速拉取镜像速度&#xff0c;web 页面管理方便。 系统优化 systemctl stop NetworkManager systemctl disable NetworkManager iptables -F systemctl restart docker安装docker [roottest05 ~]# yum install -y docker-compose…

【GitHub项目推荐--不错的 Go 学习项目】【转载】

开源实时性能分析平台 Pyroscope 是基于 Go 的开源实时性能分析平台&#xff0c;在源码中添加几行代码 pyroscope 就能帮你找出源代码中的性能问题和瓶颈、CPU 利用率过高的原因&#xff0c;调用树展示帮助你理解程序&#xff0c;支持 Go、Python、Ruby 语言。 Pyroscope 可以…

nestjs之适配器模式的应用

NestJS 是一个用于构建高效、可靠和可扩展的服务器端应用程序的框架。在 NestJS 中&#xff0c;适配器模式&#xff08;Adapter Pattern&#xff09;主要体现在其对不同类型的 HTTP 服务端框架的适配上。NestJS 本身是建立在 Express 或者 Fastify 这样的底层 HTTP 框架之上的&…

openssl3.2/test/certs - 033 - time stamping certificates

文章目录 openssl3.2/test/certs - 033 - time stamping certificates概述笔记END openssl3.2/test/certs - 033 - time stamping certificates 概述 openssl3.2 - 官方demo学习 - test - certs 笔记 /*! \file my_openssl_linux_log_doc_033.txt\note openssl3.2/test/ce…

《解释与话语权》——西游真假美猴王是自导自演吗

解读与话语权 引言 一旦有人或者组织垄断了话语权&#xff0c;那么什么都可以被重新定义和解读&#xff0c;本篇旨在让读者有更多视角的思考。 为什么一个耶和华能分裂成天主教&#xff0c;东正教&#xff0c;新教等&#xff0c;都是对于圣经和圣经故事的不同解读。 红学那…

解析GPT-3、GPT-4和ChatGPT关系-迈向自然语言处理的新高度“

Hello&#xff0c;小索奇&#xff01;很高兴为你拓展关于GPT-3、GPT-4、ChatGPT之间关系的信息&#xff0c;以及解释自然语言模型和Transformer的区别。 首先&#xff0c;GPT-3、GPT-4、ChatGPT都是建立在GPT系列技术基础上的自然语言处理模型。它们在不同的代数、性能和应用场…

k8s的图形化工具---rancher

rancher是一个开源的企业级多集群的k8s管理平台。 rancher和k8s的区别&#xff1a;都是为了容器的调度和编排系统。但是rancher不仅可以调度还可以管理整个k8s集群。 rancher自带监控(普罗米修斯) 实验部署 master01 20.0.0.32 node01 20.0.0.34 node02 20.0.0.35 test …

linux系统mysql8单机多实例+主从复制部署

一、解压mysql压缩包 参考我的另一篇博文&#xff0c;tag.gz解压完并且配置完环境变量即可&#xff0c;暂时不要初始化 linux单机部署mysql(离线环境解压即可)-CSDN博客 二、修改配置文件 可能因为版本不同&#xff0c;我的这个配置可能不是通用的&#xff0c;我安装的是my…

【Java Kubernates】Java调用kubernates提交Yaml到SparkOperator

背景 目前查询框架使用的是trino&#xff0c;但是trino也有其局限性&#xff0c;需要准备一个备用的查询框架。考虑使用spark&#xff0c;spark operator也已经部署到k8s&#xff0c;现在需要定向提交spark sql到k8s的sparkoperator上&#xff0c;使用k8s资源执行sql。 对比 …

linux安装docker--更具官网教程

1.访问https://docs.docker.com/ 2.进入download 3输入cento 或者直接访问地址Install Docker Engine on CentOS | Docker Docs 4一步一步根据官网命令走 2安装 3 4 方式一&#xff1a; service docker start&#xff08;开启&#xff09; service docker status&#xff08…

ubuntu怎么安装docker

sudo apt-get update sudo apt-get install \ ca-certificates \ curl \ gnupg \ lsb-release 添加Docker官方的GPG密钥 curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -使用以下命令设置稳定存储库。要添加 夜间或测试存储库&…

使用PowerShell命令行,批量修改文件编码

目录 ■前言 ■PowerShell命令 ■效果 ■前言 今天统计修改代码量&#xff0c;使用工具时&#xff0c;发现有些代码无法统计。 原因时UTF-8中有某些特殊字符&#xff0c;工具不能识别。 但是&#xff0c;如果把代码转换为SJIS格式&#xff0c;就能正常统计了。 因此&…

听筒及麦克风电路时序分析

打电话的时候。当没有免提的时候&#xff0c;用的是mic1&#xff0c;麦克风1居然是在J7尾插座子上&#xff0c;所以要把手机的下面贴近嘴巴。mic1的信号给到音频编解码u21&#xff0c;u21通过i2s线给cpu, 然后给基带cpu,然后通过射频发射出去。当要听声音的时候&#xff0c;射频…

【数学建模】插值与拟合

文章目录 插值插值方法用Python解决插值问题 拟合最小二乘拟合数据拟合的Python实现 适用情况 处理由试验、测量得到的大量数据或一些过于复杂而不便于计算的函数表达式时&#xff0c;构造一个简单函数作为要考察数据或复杂函数的近似 定义 给定一组数据&#xff0c;需要确定满…

【软件测试】学习笔记-性能测试场景的分类

性能测试场景的重要程度类似于业务测试的 case&#xff0c;case 是你进行业务测试的指引&#xff0c;case 是否完善也直接决定了测试的覆盖率。同理&#xff0c;场景是传递执行性能测试的步骤和目的&#xff0c;关于这两点是你一定要清楚的。 首先认识下最重要的三个性能场景&…

自主涉及从事实中抽取价值的能力

自主包括从事实中抽取价值的能力是指个体或组织在面对大量事实信息时&#xff0c;能够自主选择并提取出其中具有价值的内容或信息的能力。这种能力要求个体或组织具备以下几个方面的能力和素质&#xff1a; 1、分析能力 能够识别和理解大量的事实信息&#xff0c;并对其进行分析…