【数据结构篇】顺序表 超详细
目录
一.顺序表的定义
1.顺序表的概念及结构
1.1线性表
2.顺序表的分类
2.1静态顺序表
2.2动态顺序表
二.动态顺序表的实现
1.准备工作和注意事项
2.顺序表的基本接口:
2.0 创建一个顺序表
2.1 顺序表的初始化
2.2 顺序表的销毁
2.3 顺序表的打印
3.顺序表的尾插和尾删接口:
4.顺序表的扩容接口:
5.顺序表的头插和头删接口:
6.顺序表的指定位置插入和删除接口:
7.顺序表的查找接口:
三.完整代码
SeqList.c:
SeqList.h:
test.c :
一.顺序表的定义
1.顺序表的概念及结构
1.1线性表

2.顺序表的分类
顺序表的底层是数组,但和数组不一样的是,它对数组进行了分装,增加了增删查改等接口
2.1静态顺序表
概念:使用定长的数组存储元素(用存储整型举例)

缺陷: 空间给多了造成空间浪费,给少了空间不够
这里我解释一下为什么用 replace 代替 int : 这样是方便以后修改顺序表存储别的数据类型,用N代替数组的元素个数同理,修改时更方便
2.2动态顺序表

二.动态顺序表的实现
1.准备工作和注意事项
创建3个文件:


第一个文件:用于接口函数和所有需要用到的库函数头文件的声明,定义顺序表的结构
第二个文件:用于对接口函数的定义
第三个文件:用于接口的测试
注意事项:建议每个函数接口写完对其进行调试,避免最后产生大量报错而束手无措
我在每个接口的代码上面都添加了很多注释,帮助各位未来的大佬增加理解哦
2.顺序表的基本接口:
2.0 创建一个顺序表

2.1 顺序表的初始化

对于我为什么要先用arr来接收开辟好的空间,我本来是想着开辟失败会影响先前开辟好的空间,但转念一想先前本来也没有开辟空间那,如果开辟失败的还用arr接收还是直接用结构体成员指针接收都一样那,但从更广泛的编程实践和代码质量的角度考虑,先用arr接收是一种更好的编程习惯,有助于提高代码的严谨性和可读性,减少潜在的错误和问题。
2.2 顺序表的销毁

2.3 顺序表的打印

提前将打印接口写好,方便后面的观察
3.顺序表的尾插和尾删接口:
尾插:

切记:在插入数据后都要让有效数据个数+1
尾删:

4.顺序表的扩容接口:
由于顺序表的插入接口都要进行扩容判断,所以我们可以把扩容单独分装成一个函数

这样在后续的代码中我们直接调用这个函数就可以了
5.顺序表的头插和头删接口:
头插:

头删:

6.顺序表的指定位置插入和删除接口:
插入:

删除:

由于下面这些代码逻辑都差不多,我也就没做注释了,指定位置的插入删除无非就是要挪动数据,这个你自己画图后就可以看懂了
7.顺序表的查找接口:

三.完整代码
SeqList.c:

SeqList.h:

test.c :
这部分我只调用了部分函数(仅供参考)
四.顺序表的问题及思考
相关文章:
【数据结构篇】顺序表 超详细
目录 一.顺序表的定义 1.顺序表的概念及结构 1.1线性表 2.顺序表的分类 2.1静态顺序表 2.2动态顺序表 二.动态顺序表的实现 1.准备工作和注意事项 2.顺序表的基本接口: 2.0 创建一个顺序表 2.1 顺序表的初始化 2.2 顺序表的销毁 2.3 顺序表的打印 3.顺序…...
kubernetes 集群搭建(二进制方式)
Kubernetes 作为当今最流行的容器编排平台,提供了强大的功能来管理和扩展容器化应用。除了使用 kubeadm 等工具简化集群的创建过程外,直接通过二进制文件安装 Kubernetes 组件也是一种常见的方法。这种方式给予用户更多的控制权,并且适用于那…...
linux平台RTMP|RTSP播放器如何回调SEI数据?
我们在对接Linux平台RTMP|RTSP播放的时候,有遇到这样的技术需求,合作企业在做无人机视觉分析场景的时候,除了需要低延迟的拿到解码后的RGB|YUV数据,然后投递给他们自己的视觉算法处理模块外,还需要播放器支持SEI的回调…...
Vue uni-app免手动import
unplugin-auto-import 是一个流行的 JavaScript/TypeScript 插件,可以自动导入常用的库、API 或自定义函数,减少手动书写 import 语句的繁琐操作。它常用于 Vue、React 等框架,帮助开发者提高效率和减少样板代码。 核心功能: 自…...
7. 计算机视觉
计算机视觉(Computer Vision,简称 CV)是人工智能(AI)领域中的一个重要分支,旨在使计算机能够像人类一样“看”并理解数字图像或视频。它结合了计算机科学、数学、图像处理、模式识别、机器学习等多个学科&a…...
在服务器进行docker部署频繁提示permission denied
当你频繁遇到permission denied,证明当前用户的权限不够 可以参考如下操作: 1.创建用户组docker sudo groupadd docker把当前用户添加到docker用户组中 sudo usermod -aG docker $USER优点: 可以在不使用sudo的情况下运行docker命令...
c/c++ static
定义 修饰普通变量,修改变量的存储区域和生命周期,使变量存储在静态区,在 main 函数运行前就分配了空间,如果有初始值就用初始值初始化它,如果没有初始值系统用默认值初始化它。修饰普通函数,表明函数的作…...
C#中System.Text.Json:从入门到精通的实用指南
一、引言 在当今数字化时代,数据的高效交换与处理成为软件开发的核心环节。JSON(JavaScript Object Notation)凭借其简洁、轻量且易于读写的特性,已然成为数据交换领域的中流砥柱。无论是前后端数据交互,还是配置文件…...
内存故障原因与诊断(Reasons and Diagnosis of Memory Failure)
内存故障原因与诊断 您是否曾遇到过电脑无法启动、黑屏、死机,或者系统卡顿的情况?这些问题看起来很复杂,实际上大多数都是内存故障引起的。内存是电脑的核心组成部分之一,任何小东西问题都可能导致系统死机,严重时甚…...
[操作系统] 进程状态详解
在操作系统中,进程是程序执行的基本单位,操作系统负责管理进程的生命周期。为了高效地管理进程,操作系统通过定义不同的进程状态来表示进程在不同时间点的行为。本文将详细介绍常见的进程状态及其相互之间的转换过程。 进程状态概述 在kerne…...
[论文阅读] (36)CS22 MPSAutodetect:基于自编码器的恶意Powershell脚本检测模型
《娜璋带你读论文》系列主要是督促自己阅读优秀论文及听取学术讲座,并分享给大家,希望您喜欢。由于作者的英文水平和学术能力不高,需要不断提升,所以还请大家批评指正,非常欢迎大家给我留言评论,学术路上期…...
【Maui】下拉框的实现,绑定键值对
文章目录 前言一、问题描述二、解决方案三、软件开发(源码)3.1 创建模型3.2 视图界面3.3 控制器逻辑层 四、项目展示 前言 .NET 多平台应用 UI (.NET MA…...
Oracle 深入学习 Part 14:Managing Password Security and Resources(管理密码安全性和资源)
Profiles Profile 是一个以名称标识的集合,用于管理 密码 和 资源限制。 每个用户都对应一个profiles,可以通过 CREATE USER 或 ALTER USER 命令分配给用户。 Profiles 可以启用或禁用。 Profiles 可以关联到默认的 DEFAULT Profile。 密码管理&…...
C语言:位段
位段的内存分配: 1. 位段的成员可以是 int unsigned int signed int 或者是char (属于整形家族)类型 2. 位段的空间上是按照需要以4个字节( 类型 int )或者1个字节( char )的方式来开辟的。 3. 位段涉及…...
MPLS VPN 原理与配置
一.简介 MPLS,称之为多协议标签交换,在九十年代中期被提出来,用于解决传统IP报文依赖查表转发而产生的瓶颈,现多用于VPN技术,MPLS报头封装在数据链路层之上,网络层之下。本文为结合了华为技术和新华三技术…...
稳定的通信桥梁,CCLINKIE转ModbusTCP网关实现AGV运输的光速效应
三菱PLC与AGV机器人搬运车通过稳联技术协议转换网关建立通信 一、现场情况概述 - 三菱PLC:使用CC-Link IE协议进行通信。 - AGV机器人搬运车:使用Modbus TCP协议进行通信。 - 协议转换网关:使用稳联技术的协议转换网关将PLC和AGV连接…...
Leetcode 3428. Maximum and Minimum Sums of at Most Size K Subsequences
Leetcode 3428. Maximum and Minimum Sums of at Most Size K Subsequences 1. 解题思路2. 代码实现 题目链接:3428. Maximum and Minimum Sums of at Most Size K Subsequences 1. 解题思路 这一题不需要连续性,因此我们就是考虑取得子串长度为别为1…...
第2章:Python TDD构建Dollar类基础
写在前面 这本书是我们老板推荐过的,我在《价值心法》的推荐书单里也看到了它。用了一段时间 Cursor 软件后,我突然思考,对于测试开发工程师来说,什么才更有价值呢?如何让 AI 工具更好地辅助自己写代码,或许…...
【算法学习笔记】34:扩展欧几里得算法
裴蜀定理 描述 对于任意正整数 a a a、 b b b,一定存在整数系数 x x x, y y y,使得: a x b y g c d ( a , b ) ax by gcd(a, b) axbygcd(a,b) 并且 g c d ( a , b ) gcd(a, b) gcd(a,b)是对于任意的系数 x x x和 y y y放在…...
云原生周刊:K8s 生产环境架构设计及成本分析
开源项目推荐 KubeZoneNet KubeZoneNet 旨在帮助监控和优化 Kubernetes 集群中的跨可用区(Cross-Zone)网络流量。这个项目提供了一种简便的方式来跟踪和分析 Kubernetes 集群中跨不同可用区的通信,帮助用户优化集群的网络架构、提高资源利用…...
WRKFLW性能优化:如何加速大型矩阵构建和工作流执行?
WRKFLW性能优化:如何加速大型矩阵构建和工作流执行? 【免费下载链接】wrkflw Validate and Run GitHub Actions locally. 项目地址: https://gitcode.com/gh_mirrors/wr/wrkflw WRKFLW是一个强大的GitHub Actions本地验证和运行工具,能…...
Jets与CI/CD集成:自动化部署和持续交付的终极指南 [特殊字符]
Jets与CI/CD集成:自动化部署和持续交付的终极指南 🚀 【免费下载链接】jets Ruby on Jets 项目地址: https://gitcode.com/gh_mirrors/je/jets Jets作为一款强大的Ruby无服务器部署服务,为开发者提供了完整的CI/CD集成方案,…...
BiliTools AI视频总结:告别信息焦虑的终极学习助手
BiliTools AI视频总结:告别信息焦虑的终极学习助手 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools 你是…...
从零到精通:Ryujinx模拟器全方位技术指南
从零到精通:Ryujinx模拟器全方位技术指南 【免费下载链接】Ryujinx 用 C# 编写的实验性 Nintendo Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/ry/Ryujinx Ryujinx是一款采用C#开发的开源Nintendo Switch模拟器,通过动态编译和…...
突破限制!无需模拟器的3种Windows APK安装方案
突破限制!无需模拟器的3种Windows APK安装方案 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer Windows APK安装一直是跨平台应用的痛点,传统模拟…...
STM32F407 RTC实战:从CubeMX配置到低功耗日历应用
1. STM32F407 RTC模块入门指南 第一次接触STM32的RTC功能时,我完全被它强大的低功耗特性震惊了。记得当时做一个环境监测项目,需要设备在断电后依然能保持准确计时,RTC完美解决了这个问题。STM32F407的RTC模块不仅提供精准的日历时钟功能&…...
3步掌握microeco:微生物网络分析的完整指南
3步掌握microeco:微生物网络分析的完整指南 【免费下载链接】microeco An R package for data analysis in microbial community ecology 项目地址: https://gitcode.com/gh_mirrors/mi/microeco 还在为复杂的微生物网络分析而头疼吗?面对海量的物…...
如何快速掌握微信自动化:3步终极解决方案
如何快速掌握微信自动化:3步终极解决方案 【免费下载链接】wxhelper Hook WeChat / 微信逆向 项目地址: https://gitcode.com/gh_mirrors/wx/wxhelper 想要实现PC端微信的自动化操作吗?wxhelper为你提供了完整的微信Hook解决方案,让你…...
Ubuntu20.04 软件和更新故障排查与优化指南
1. 软件源问题排查与修复 遇到Ubuntu20.04软件和更新打不开的情况,十有八九是软件源出了问题。我遇到过最典型的情况就是系统突然提示"无法连接到软件源",或者点击软件更新器后毫无反应。这时候别急着重装系统,跟着我一步步排查。 …...
PPTist:基于Vue3与TypeScript的在线演示文稿技术架构解析
PPTist:基于Vue3与TypeScript的在线演示文稿技术架构解析 【免费下载链接】PPTist PowerPoint-ist(/pauəpɔintist/), An online presentation application that replicates most of the commonly used features of MS PowerPoint, allowing…...
