C++ 顺序表

ops/2025/2/12 7:21:30/

顺序表的操作有以下:

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;
}


http://www.ppmy.cn/ops/157718.html

相关文章

SVN 版本回退

SVN 版本回退 引言 Subversion&#xff08;简称SVN&#xff09;是一款广泛使用的版本控制系统&#xff0c;它允许开发团队在项目开发过程中跟踪源代码的修改历史。在软件开发过程中&#xff0c;版本回退是一项重要的操作&#xff0c;它可以帮助开发人员恢复到某个特定的代码版…

如何查看Ubuntu24.04系统,显卡是什么型号,适配的驱动是什么?

在Ubuntu 24.04系统中&#xff0c;查看显卡型号和适配的驱动程序可以通过以下步骤完成&#xff1a; 查看显卡型号 要确定您的计算机上安装了什么显卡&#xff0c;您可以使用几种不同的命令。最常用的命令之一是lspci&#xff0c;它能够列出所有PCI设备的信息。为了专门找到NV…

环信EaseCallKit信令详解

EaseCallKit 是一套基于环信 IM 和声网音视频结合开发的音视频 UI 库&#xff0c;实现了一对一语音和视频通话以及多人音视频通话的功能。基于 EaseCallKit 可以快速实现通用音视频功能。 下面讲解用IM做信令的过程和效果示意 &#xff08;一&#xff09;演示样例&#xff08…

大语言模型多代理协作(MACNET)

大语言模型多代理协作(MACNET) Scaling Large-Language-Model-based Multi-Agent Collaboration 提出多智能体协作网络(MACNET),以探究多智能体协作中增加智能体数量是否存在类似神经缩放定律的规律。研究发现了小世界协作现象和协作缩放定律,为LLM系统资源预测和优化…

9.混合推荐系统的高级应用

接下来我们将学习混合推荐系统的高级应用。混合推荐系统&#xff08;Hybrid Recommender System&#xff09;通过结合多种推荐算法&#xff0c;可以利用不同算法的优势&#xff0c;提升推荐效果和用户满意度。在这一课中&#xff0c;我们将介绍以下内容&#xff1a; 混合推荐系…

微服务中如何使用openfeign上传文件

继上一篇文章讲了springboot上传文件的各种基本操作&#xff0c;但我们在实际的开发中可能会单独的开发一个文件服务来管理我们的真实的文件&#xff0c;然后将我们的文件信息和业务的数据存放在一起。那么在微服务中如何使用openfeign上传文件呢&#xff1f; 首先需要搭建一套…

图像锐化(QT)

如果不使用OpenCV&#xff0c;我们可以直接使用Qt的QImage类对图像进行像素级操作来实现锐化。锐化算法的核心是通过卷积核&#xff08;如拉普拉斯核&#xff09;对图像进行处理&#xff0c;增强图像的边缘和细节。 以下是一个完整的Qt应用程序示例&#xff0c;展示如何使用Qt…

问题解决 4S 法

在深入研读《像高手一样解决问题》的第二章后&#xff0c;犹如打开了一扇通往高效问题解决领域的新大门&#xff0c;其中所阐述的问题解决 4S 法&#xff0c;更是给人以拨云见日之感。 一、陈述&#xff08;State&#xff09;&#xff1a;明确问题本质 这是问题解决的起始点&…