C++ 顺序表
顺序表的操作有以下:
1 顺序表的元素插入
给定一个索引和元素,这个位置往后的元素位置都要往后移动一次,元素插入的步骤有以下几步
(1)判断插入的位置是否合法,如果不合法则抛出异常
(2)如果是顺序表已满,则需要扩容顺序表,一般是将原有顺序表的容量进行倍增
(3)将插入位置之后的元素向后移动,为新元素腾出空间
(4)将新元素插入到指定位置
(5)更新顺序表的大小
2 顺序表的元素删除
将对应索引位置元素删除后,这个位置往后所有元素位置往前移动一次,元素删除有以下几步
(1)判断删除位置是否合法,如果不合法则抛出异常
(2)如果删除位置为最后一个元素,则顺序表的大小直接-1
(3)如果删除位置不是最后一个元素,则将删除位置之后的元素向前移动,覆盖要删除的元素
(4)更新顺序表的大小
3 顺序表的元素查找
找到元素位置,并且返回索引,查找步骤为
(1)遍历顺序表,对顺序表中每个元素与指定元素进行比较,如果找到则返回对应索引
(2)如果遍历完所有元素,都没有找到对应元素,则返回-1
4 顺序表的元素索引
直接即可获得
5 顺序表的元素修改
直接将给定位置改为对应的值
附顺序表代码见下:
#include<iostream>
using namespace std;
#define eleType intstruct 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 element) {if (index <0 || index > list->size) {throw std::invalid_argument("Invalid index");}if (list->size == list->capacity) {int newCapacity = list->capacity * 2;eleType *newelement = new eleType[newCapacity];for (int i = 0; i < newCapacity / 2; ++i) {newelement[i] = list->elements[i];}delete[] list->elements;list->elements = newelement;list->capacity = newCapacity;}if (list->size < list->capacity) {for (int i = list->size - 1; i > index; --i) {list->elements[i] = list->elements[i - 1];}list->elements[index] = element;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 element) {for (int i = 0; i < list->size; ++i) {if (list->elements[i] == element) {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;
}
相关文章:
C++ 顺序表
顺序表的操作有以下: 1 顺序表的元素插入 给定一个索引和元素,这个位置往后的元素位置都要往后移动一次,元素插入的步骤有以下几步 (1)判断插入的位置是否合法,如果不合法则抛出异常 (2&…...
SQL-leetcode—1327. 列出指定时间段内所有的下单产品
1327. 列出指定时间段内所有的下单产品 表: Products ------------------------- | Column Name | Type | ------------------------- | product_id | int | | product_name | varchar | | product_category | varchar | ------------------------- product_id 是该表主键(具…...
DeepSeek图解10页PDF
以前一直在关注国内外的一些AI工具,包括文本型、图像类的一些AI实践,最近DeepSeek突然爆火,从互联网收集一些资料与大家一起分享学习。 本章节分享的文件为网上流传的DeepSeek图解10页PDF,免费附件链接给出。 1 本地 1 本地部…...
机器学习中常用的评价指标
一、分类任务常用指标 1. 准确率(Accuracy) 定义:正确预测样本数占总样本数的比例。优点:直观易懂,适用于类别平衡的数据。缺点:对类别不平衡数据敏感(如欺诈检测中99%的负样本)。…...
3. 【.NET Aspire 从入门到实战】--理论入门与环境搭建--环境搭建
构建现代云原生应用程序时,开发环境的搭建至关重要。NET Aspire 作为一款专为云原生应用设计的开发框架,提供了一整套工具、模板和集成包,旨在简化分布式系统的构建和管理。开始项目初始化之前,确保开发环境的正确配置是成功的第一…...
【Golang学习之旅】Go + MySQL 数据库操作详解
文章目录 前言1. GORM简介2. 安装GORM并连接MySQL2.1 安装GORM和MySQL驱动2.2 连接MySQL 3. GORM数据模型(Model)3.1 定义User结构体3.2 自动迁移(AutoMigrate) 4. GORM CRUD 操作4.1 插入数据(Create)4.2 …...
33.日常算法
1.螺旋矩阵 题目来源 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。 示例 1: 输入:matrix [[1,2,3],[4,5,6],[7,8,9]] 输出:[1,2,3,6,9,8,7,4,5] class Solution { public:vec…...
ArgoCD实战指南:GitOps驱动下的Kubernetes自动化部署与Helm/Kustomize集成
摘要 ArgoCD 是一种 GitOps 持续交付工具,专为 Kubernetes 设计。它能够自动同步 Git 仓库中的声明性配置,并将其应用到 Kubernetes 集群中。本文将介绍 ArgoCD 的架构、安装步骤,以及如何结合 Helm 和 Kustomize 进行 Kubernetes 自动化部署。 引言 为什么选择 ArgoCD?…...
每日Attention学习22——Inverted Residual RWKV
模块出处 [arXiv 25] [link] [code] RWKV-UNet: Improving UNet with Long-Range Cooperation for Effective Medical Image Segmentation 模块名称 Inverted Residual RWKV (IR-RWKV) 模块作用 用于vision的RWKV结构 模块结构 模块代码 注:cpp扩展请参考作者原…...
机器学习之数学基础:线性代数、微积分、概率论 | PyTorch 深度学习实战
前一篇文章,使用线性回归模型逼近目标模型 | PyTorch 深度学习实战 本系列文章 GitHub Repo: https://github.com/hailiang-wang/pytorch-get-started 本篇文章内容来自于 强化学习必修课:引领人工智能新时代【梗直哥瞿炜】 线性代数、微积分、概率论 …...
UNI-MOL: A UNIVERSAL 3D MOLECULAR REPRESENTATION LEARNING FRAMEWORK
UNI-MOL: A UNIVERSAL 3D MOLECULAR REPRESENTATION LEARNING FRAMEWORK Neurips23 推荐指数:#paper/⭐⭐⭐#(工作量不小) 动机 在大多数分子表征学习方法中,分子被视为 1D 顺序标记或2D 拓扑图,这限制了它们为下游任务整合…...
SQL Server查询计划操作符(7.3)——查询计划相关操作符(6)
7.3. 查询计划相关操作符 48)Key Lookup:该操作符对一个有簇索引的表进行书签查找。参数列包含簇索引的名字和用于查找簇索引中数据行的簇键。该操作符总是伴随一个Nested Loops操作符。如果其参数列中出现WITH PREFETCH子句,则查询处理器已决定使用异步预取(预读,read-ah…...
C语言【基础篇】之数组——解锁多维与动态数组的编程奥秘
数组 🚀前言🦜数组的由来与用途🌟一维数组详解🖊️二维数组进阶💯动态数组原理🤔常见误区扫盲💻学习路径建议✍️总结 🚀前言 大家好!我是 EnigmaCoder。本文收录于我的专…...
C++ 字符串编码转换
UTF8 的string 转 UTF16 的 wstring std::wstring Utf8ToUtf16(const std::string& utf8Str) { // 获取 UTF-16 字符串所需的缓冲区大小 int wstrLength = MultiByteToWideChar(CP_UTF8, 0, utf8Str.c_str(), -1, NULL, 0); if (wstrLength == 0) { // …...
通讯录管理小程序
通讯录管理系统 是对c基础语法的巩固,比较简单的一个小程序,重点在于养成良好的c代码习惯。 通讯录是一个可以记录亲人、好友信息的工具。 本教程主要利用C来实现一个通讯录管理系统 下面是一些需要实现的功能: 1. 添加联系人 功能描述&…...
掌握API和控制点(从Java到JNI接口)_38 JNI从C调用Java函数 01
1. Why? 将控制点下移到下C/C层 对古典视角的反思 App接近User,所以App在整体架构里,是主导者,拥有控制权。所以, App是架构的控制点所在。Java函数调用C/C层函数,是合理的。 但是EIT造形告诉我们: App…...
理解UML中的四种关系:依赖、关联、泛化和实现
在软件工程中,统一建模语言(UML)是一种广泛使用的工具,用于可视化、设计、构造和文档化软件系统。UML提供了多种图表类型,如类图、用例图、序列图等,帮助开发者和设计师更好地理解系统的结构和行为。在UML中…...
windows蓝牙驱动开发-蓝牙 LE 邻近感应配置文件
邻近感应检测是蓝牙低功耗 (LE) 的常见用途。 本部分提供了创建可用于开发 UWP 设备应用的邻近感应配置文件的设备实现的指南。 在开发此应用之前,应熟悉蓝牙 LE 函数和蓝牙 LE 邻近感应配置文件规范。 示例服务声明 蓝牙低功耗引入了一个新的物理层,…...
【截图】selenium自动通过浏览器截取指定元素div的图片
【截图】selenium自动通过浏览器截取指定元素div的图片 思路 截取完整网页截图 通过元素的坐标 截图到指定位置的图片 前提是已经获取到 driver 了 # 定位目标divtarget_div driver.find_element(By.CLASS_NAME, headlines-right)# 获取div的位置和大小location target_div…...
【算法】动态规划专题⑨ —— 二维费用背包问题 python
目录 前置知识进入正题实战演练 前置知识 【算法】动态规划专题⑤ —— 0-1背包问题 滚动数组优化 python 进入正题 二维费用背包问题 方法思路 二维费用背包问题在传统背包问题的基础上增加了第二个维度的限制(如重量)。 每个物品具有两种费用&#x…...
免费windows pdf编辑工具Epdf
Epdf(完全免费) 作者:不染心 时间:2025/2/6 Github: https://github.com/dog-tired/Epdf Epdf Epdf 是一款使用 Rust 编写的 PDF 编辑器,目前仍在开发中。它提供了一系列实用的命令行选项,方便用户对 PDF …...
MVCC机制深度解析
在数据库管理系统中,多版本并发控制(MVCC,Multi-Version Concurrency Control)是一种用于提高数据库并发性能的技术。它通过在同一数据项上存储多个版本,允许事务在读取数据时不必等待其他事务的完成,从而提…...
C++:类和对象初识
C:类和对象初识 前言类的引入与定义引入定义类的两种定义方法1. 声明和定义全部放在类体中2. 声明和定义分离式 类的成员变量命名规则 类的访问限定符及封装访问限定符封装 类的作用域与实例化类的作用域类实例化实例化方式: 类对象模型类对象的大小存储…...
伪分布式Spark3.4.4安装
参考:Spark2.1.0入门:Spark的安装和使用_厦大数据库实验室博客 我的版本: hadoop 3.1.3 hbase 2.2.2 java openjdk version "1.8.0_432" 问了chatgpt,建议下载Spark3.4.4,不适合下载Spark 2.1.0: step1 Spark下载…...
kafka服务端之控制器
文章目录 概述控制器的选举与故障恢复控制器的选举故障恢复 优雅关闭分区leader的选举 概述 在Kafka集群中会有一个或多个broker,其中有一个broker会被选举为控制器(Kafka Controler),它负责管理整个集群中所有分区和副本的状态。…...
element-plus el-tree-select 修改 value 字段
element-plus el-tree-select 修改 value 字段 ,不显示label 需要注意两个地方: <el-tree-select v-model"value" :data"data" multiple :render-after-expand"false" show-checkbox style"width: 240px" …...
SQL最佳实践(笔记)
写在前面: 之前baeldung的Java Weekly Reviews里面推荐了一篇关于SQL优化的文章,正好最近在学习数据库相关知识,记一些学习笔记 原文地址:SQL Best Practices Every Java Engineer Must Know 1. 使用索引 使用索引…...
在 Java 中执行一个复杂的 SQL 查询(包含多表连接、子查询和聚合函数),如何确保查询的性能?请列举至少三条措施。请简要描述其工作原理?
在Java中执行复杂的SQL查询时,确保查询性能是非常重要的。 以下是三条关键措施,以及它们的详细解释、代码示例和实际开发中的注意事项。 1. 使用索引 索引是提高数据库查询性能的最基本手段之一。通过在查询条件中使用的列上创建索引,可以…...
java将list转成树结构
首先是实体类 public class DwdCusPtlSelectDto {//idprivate String key;//值private String value;//中文名private String title;private List<DwdCusPtlSelectDto> children;private String parentId;public void addChild(DwdCusPtlSelectDto child) {if(this.chil…...
【R语言】数据分析
一、描述性统计量 借助R语言内置的airquality数据集进行简单地演示: 1、集中趋势:均值和中位数 head(airquality) # 求集中趋势 mean(airquality$Ozone, na.rmT) # 求均值 median(airquality$Ozone, na.rmT) # 求中位数 2、众数 众数(mod…...
