news 2026/4/25 3:11:58

数据结构初涉----顺序表

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
数据结构初涉----顺序表

有了我们之前共同学习的C做基础,我们本文开始学习数据结构,本文先从数据结构的基础-----顺序表开始介绍。

顺序表的出现

顺序表的基层原理其实就是数组,但是数组用来存放数据可以,遇到插入数据,删除数据这些操作时,我们得先计算此时数组中的元素个数,再进行一系列的操作,此过程比较麻烦,数组就不够用了,所以出现了顺序表这个概念,在数组的基础上增加了一些增删查改的操作方法,摇身一变成了顺序表。

顺序表的物理与逻辑结构

说到顺序表,就不得不提线性表这个概念,线性表是具有相同特性的数据结构的集合,它的逻辑结构一定连续,但是物理结构不一定连续,由于顺序表的底层原理是数组,所以说它的物理结构和逻辑结构都是连续的。

顺序表的分类

顺序表分为静态顺序表动态顺序表两大类。

静态顺序表

动态顺序表

从顺序表的结构中不难看出,静态的顺序表是使用定长数组,动态顺序表中是使用指针动态分配空间,我们一般都会使用动态顺序表,不仅空间是动态分配,参数也是有利于顺序表的各种操作函数实现。

在使用顺序表时,我们不仅会在表中放入 int 型数据,也会放入其他类型,例如 char,float 等等,所以为了代码提高利用率,我们使用 typedef 关键字来替换数据类型。

顺序表的各种增删查改操作都是由函数来实现的,我们实现出该功能的代码后,将其封装为一个函数,方便日后使用。

顺序表的增删查改函数实现

顺序表的初始化

将结构体的各部分分别进行初始化...

顺序表的销毁

顺序表的插入

在顺序表中插入数据时,我们可以选择在顺序表的表头插入,表尾以及选择一个随机位置插入,根据需求来选择插入的位置,那么根据以上这些情况,思路如下:

1.插入空间是否被占用?

首先在插入数据之前,我们要先将要插入的数据空间提前留出,以方便结构体指针直接插入新数据,那么在尾插中不存在这个问题,直接将数据插入至顺序表尾部即可,那么在头插和指定位置插入时,我们要通过循环来将数据逐个移位,此时需要注意数据是从后向前逐个移动,不能够覆盖原本数据。

2.指针指向空间是否充足,能够容纳新插入数据?

若空间不充足时,进行数据插入会导致程序数据会导致数据写入失败或者丢失,所以在插入新数据之前,我们要判断此时空间是否仍然充足,不够时要进行空间扩容(realloc---> 动态内存函数中介绍)。

3.在确定空间要进行扩容时,一次增大多少才不会过于浪费空间?

若每次增容过小时,每次有可能会重新开辟空间,使得程序效率低下;

若每次增容过大时,用不完但是一直在占用,会一定程度上浪费空间;

那么增容一般是成倍的增加,一般是2倍增加,使得空间复杂度最低。

4.在扩容时,使用 realloc 函数需要注意些什么?

在介绍动态内存函数时,我们介绍到主要有三点:

  1. 扩容时返回一个指向起始地址的指针,那么此时的空间有可能会申请失败,此时返回一个空指针,为了防止将原本空间地址同时搞丢时,我们要拿一个新指针来接收,判断其并非是空指针,标志着空间申请成功时,将指针赋值使用。
  2. 动态申请的空间在使用完之后必须要进行内存释放(free函数)。
  3. 将空间释放之后,此时指向该空间起始地址的指针变为空指针,为了防止有野指针的出现,要将指针及时置空。
顺序表的头插

顺序表的尾插

当开始顺序表的尾插时,你会发现只要是插入,不论是在哪一个位置插入,都需要判断空间是否充足,代码会出现冗余现象,所以我们将判断空间是否充足的功能封装为一个函数。

顺序表的指定位置插入

顺序表的删除
顺序表的头删

直接覆盖就删除,记得 ps->size 更新

顺序表的尾删

顺序表的指定位置删除

顺序表的打印

打印顺序表的内容时,只需要传值打印,需要修改指针指向的内容时,才需要传址调用。

顺序表的查找

查找元素成功则返回元素所在下标,失败则返回-1。

以上就是顺序表中所需要函数功能的封装源码实现,以下为测试这些函数的功能:

以上为数据结构入门--->顺序表的函数封装,下篇即实现利用顺序表应用--->通讯录项目。

创作不易,喜欢揪一键三连,有问题欢迎评论区留言,共同学习,一起进步!!!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/25 3:11:56

GBDT概率模型在空气污染预测中的应用实践

1. 项目背景与核心价值空气污染预测一直是环境科学和公共健康领域的重要课题。传统预测方法往往只能给出确定性结果,而概率预测模型则能提供更丰富的风险信息。这个项目构建的概率预测模型,能够量化未来出现污染天气的可能性,为决策者提供更科…

作者头像 李华
网站建设 2026/4/25 3:09:44

基于vDisk的高校实验室IDV云桌面安全管理方案

基于vDisk的高校实验室IDV云桌面安全管理方案本文是针对高校公共计算机实验室、AI实训机房,提供的可落地建设部署方案,以IDV架构结合vDisk虚拟磁盘统一管理为核心,解决实验室桌面基线混乱、数据安全难管控、合规审计缺失、AI教学环境部署慢的…

作者头像 李华
网站建设 2026/4/25 3:05:38

evolver部署教程:构建自动优化AI系统

在运行进化算法或自动优化类 AI 系统时,计算资源与运行稳定性会直接影响结果质量。尤其是在需要长时间迭代、批量实验或多轮计算的场景中,一些具备稳定资源与弹性能力的环境(如莱卡云服务器这类部署方式)通常更有利于实验持续推进…

作者头像 李华
网站建设 2026/4/25 3:00:36

多智能体系统在网络安全防御中的革命性应用

1. 多智能体系统:网络安全防御的范式转变网络安全领域正面临前所未有的挑战。根据Verizon《2023年数据泄露调查报告》,83%的组织经历过多次数据泄露事件,而传统安全解决方案的平均检测时间仍长达287天。这种防御失效的根本原因在于&#xff1…

作者头像 李华