顺序表知识点——顺序表的增删查改

目录

准备文件

创建顺序表蓝图

顺序表初始化函数接口

 顺序表的销毁函数接口

顺序表的打印函数接口 

顺序表的插入函数接口 

顺序表的删除函数接口 


从本节开始, 复习数据结构。 空间复杂度还有时间复杂度之后利用例题学习。 这节先学习顺序表的增删查改。 

首先, 顺序表有点类似于数组, 都是一块连续的内存空间。 如图:

这就是顺序表。 

顺序表又分固态的顺序表和动态的顺序表。 但是固态的顺序表实用性不大,在实际生活中我们很难把握数据的数量。 固态的顺序表可能导致开辟的空间过大或者过小, 所以动态的顺序表就是我们的首选。 

现在我们主要以动态的顺序表为例, 学习一下顺序表的增删查改。 

准备文件

先准备好三个文件

两个.c文件

一个.h文件

创建顺序表蓝图

在.h文件中创建顺序表结构体, 函数声明等。

首先包含一下头文件和要保存的数据进行typedef一下, 将要保存的数据类型typedef的意义是方便后续代码的维护, 后续使用该类型时一律使用SQDataType。

然后创建结构体

 动态的顺序表要用到动态内存分配, 用一个指针也就是data指向动态开辟的空间。因为要保存的数据类型是SQDataType 所以指针的类型是SQDataType, size是目前保存的数据的个数, capacity是顺序表的总容量。

创建完是这样的。

顺序表初始化函数接口

在.h文件中声明函数接口

.c中实现初始化函数: 

这里我初始化设置了10个数据的空间, 也可以不开辟空间,直接让ps->data = NULL, 也就是指向空。

这里我已初始化设置10个空间为例。 

 顺序表的销毁函数接口

既然有初始化开辟10个空间, 就得有销毁顺序表函数接口。 不然会出现内存泄漏。

.h声明:

 

.c接口实现:

 

释放ps->data指向的空间, 然后置为空, 顺序表的数据大小size也置位0, capacity顺序表容量同样变成0.

顺序表的打印函数接口 

在实现顺序表的插入操作前, 先实现打印, 方便后续我们检查顺序表写的是否正确。 

.h接口声明

.c接口实现:

 

顺序表的插入函数接口 

顺序表的插入函数接口分为:头插, 尾插, 任意位置插入。

头插就是在顺序表的第一个位置进行插入。

尾插是在顺序表所有数据接下来的位置插入。

任意位置则是在顺序表的任意一个位置插入, 这时分两种情况。

第一种情况在最后一个数据之前插入:

 

第二种情况是在最后一个数据之后插入。 这个时候无论这个位置多大, 都是挨着最后一个数据插入。

 

同时, 尾插和头插是可以通过调用任意位置插入实现。为什么这么说?

我在这里先写一下任意位置插入的函数接口声明

.h声明:

我如果调用该函数时,pos形参传的时ps->size. 那么就是尾插, 传0就是头插 

 ​​​​​​​

 所以只要我们写个任意位置插入, 尾插头插进行对他进行复用就行。 

.c函数接口实现

现在我们来检查一下我们是否写对了。这里用到了我们写的打印函数。​​​​​​​ 

ok, 没问题,继续往下走。

现在写头插和尾插就容易了。

.h函数声明

.c函数实现:

 

顺序表的删除函数接口 

顺序表删除函数接口, 和顺序表的插入函数接口一样, 我们如果写一个任意位置的删除函数接口, 然后复用, 就能很快的写出尾删和, 头删的函数接口。 

任意位置的删除情况如下有两种情况。 

情况1, 要删除的位置大于最后一个数据的位置, 删除的永远是最后一个位置。

情况二, 要删除的位置在数据的中间。

.h函数声明 

.c函数的实现

 

现在来测试一下是否有错误: 

ok, 没有错误,  其实到了这里就差不多了, 只剩下尾删和头删了。

.h声明: 

 .c文件函数接口实现

 

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

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

相关文章

并发编程基础

为什么开发中需要并发编程? 加快响应用户的时间使你的代码模块化、异步化、简单化充分利用CPU资源 基础概念 进程和线程 进程 我们常听说的应用程序,由指令和数据组成。当我们不运行应用程序时,这些应用程序就是放在磁盘上的二进制的代码…

【MATLAB】mlptdenoise信号分解+FFT傅里叶频谱变换组合算法

有意向获取代码,请转文末观看代码获取方式~ 展示出图效果 1 mlptdenoise分解算法 MLPT denoise(Maximum Likelihood Parameter-Tuned Denoise)是一种基于小波变换的信号分解算法,它可以将信号分解为多个具有不同频率特性的小波分…

Threejs 实现3D影像地图,Json地图,地图下钻

1.使用threejs实现3D影像地图效果,整体效果看起来还可以,底层抽象了基类,实现了通用,对任意省份,城市都可以只替换数据,即可轻松实现效果。 效果如下: 链接https://www.bilibili.com/video/BV1…

【人工智能高频面试题--基本篇】

🚀 作者 :“码上有前” 🚀 文章简介 :人工智能高频面试题 🚀 欢迎小伙伴们 点赞👍、收藏⭐、留言💬 人工智能高频面试题--基本篇 1.深度学习和过往的神经网络训练方法有什么区别?列举…

Panalog大数据日志审计系统libres_syn_delete.php命令执行漏洞

声明 本文仅用于技术交流,请勿用于非法用途 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。 1、产品简介 Panalog大数据日志审计系统定位于将大数据产品应用于高校…

【.xml文件匹配不到】⭐️解决使用mybatis-plus找不到对应的xml文件导致的持久层方法报错

前言 小伙伴们大家好,很快嗷,到了年后的第一周,最近在自己电脑上敲项目时遇到一个平时可能不怎么遇到的问题,就是mybatis持久层框架使用时找不到对应的xml配置文件,也就导致自己写的持久层方法报错 接口报错内容&…

win11修改网络算法为BBR2_提升网络环境质量

Win11 BBR2 是Google开发的一种高效的网络拥塞控制算法,玩 Linux 的朋友应该对它还有锐速不陌生。相比Windows默认使用的 CUBIC 算法,BBR2 在网络吞吐量、延迟、全局性能等方面都有一定优势。 如果你日常网络经常丢包或者高延迟可以尝试切换为BBR2算法。…

实施工程师前后端项目部署流程一次完成

目录 一、jdk安装具体步骤 二、tomcat安装具体步骤 三、MySql具体步骤 修改密码 登录 四、nginx安装 4.1、Nginx 4.2、操作步骤 安装ssl证书(https) 开80端口 测试 设置自启动 五、后端部署tomcat负载均衡 5.1、为什么要使用 5.2、搭建ngin…

抖音视频提取软件怎么用|抖音数据抓取工具

针对用户获取抖音视频的需求,我们开发了一款功能强大的抖音视频提取软件,旨在帮助用户轻松获取他们感兴趣的视频内容。无需逐个复制链接,无需繁琐的下载步骤,我们的软件让抖音视频获取变得简单快捷。 使用我们的软件非常简单&…

Open3D 基于最小生成树的法线定向 (27)

Open3D 基于最小生成树的法线定向 (27) 一、算法介绍二、算法实现一、算法介绍 法线计算的方向通常都存在方向问题,用Open3D估计的点云法线,是在每个点的局部进行拟合,估计的法线方向并不一致,Open3D提供了使用最小生成树调整法线到统一方向的方法,下面是具体的实现代码…

从Unity到Three.js(outline 模型描边功能)

指定模型高亮功能,附带设置背景颜色,获取随机数方法。 百度查看说是gltf格式的模型可以携带PBR材质信息,如果可以这样,那就完全可以在blender中配置好材质导出了,也就不需要像在unity中调整参数了。 import * as THRE…

从零实现一套低代码(保姆级教程)【后端服务】 --- 【22】实现数据库管理的前端页面

摘要 在上一篇中,我们实现了三个接口: 新增实体的接口删除实体的接口获取实体列表的接口 其实复杂的地方在于,我们创建一个实体,是在数据库中创建了一张表。而这张表中的数据,是要根据低代码平台中的操作进行更改。…

基于pytorch使用LSTM实现文本匹配任务

本文学习纪录 PyTorch深度学习项目实战100例 使用LSTM来实现文本匹配任务 使用LSTM(Long Short-Term Memory)网络来实现文本匹配任务是自然语言处理(NLP)中的一个常见应用。文本匹配任务的目标是确定两个文本段落是否在某种程度…

Vue + Echarts页面内存占用高问题解决

Vue Echarts页面内存占用高问题解决 1.问题描述 目前使用的是Vue2 Echarts4.x的组合,页面如下所示。 就是一个类似于神策的数据看板页面,左侧是一个导航栏,右侧看板页面中包含很多个报表图片,其中报表页面中对Echarts图表进…

STL常用容器(string容器)---C++

STL常用容器目录 1.string容器1.1 string基本概念1.2 string构造函数1.3 string赋值操作1.4 string字符串拼接1.5 string查找和替换1.6 string字符串比较1.7 string字符存取1.8 string插入和删除1.9 string子串 1.string容器 1.1 string基本概念 本质: string是C…

电子签证小程序系统源码后台功能列表

基于ThinkPhp8.0uniapp 开发的电子签证小程序管理系统。能够真正帮助企业基于微信公众号H5、小程序、wap、pc、APP等,实现会员管理、数据分析,精准营销的电子商务管理系统。可满足企业新零售、批发、分销、预约、O2O、多店等各种业务需求,快速积累客户、…

搜索专项---IDA*

文章目录 排书回转游戏 一、排书OJ链接 本题思路:先考虑每一步的决策数量:当抽取长度为 i 的一段时,有 n−i1 种抽法,对于每种抽法,有 n−i 种放法。另外,将某一段向前移动,等价于将跳过的那段向后移动&am…

C++之std::tuple(二) : 揭秘底层实现原理

相关系列文章 C之std::tuple(二) : 揭秘底层实现原理 C三剑客之std::any(一) : 使用 C之std::tuple(一) : 使用精讲(全) C三剑客之std::variant(一) : 使用 C三剑客之std::variant(二):深入剖析 深入理解可变参数(va_list、std::initializer_list和可变参数模版) st…

【JVM】线上一次fullGC排查思路

fullGC问题背景 监控告警发现,今天开始我们线上应用频繁出现fullGC,并且每次出现后磁盘都会被占满 查看监控 查看监控发现FULLGC的机器均为同一个机房的集器,并且该机房有线上error报错,数据库监控对应的时间点也有异常&#x…

数据结构知识点总结-绪论 数据结构基本术语 算法及评价

要求 (1)对数据结构这么课学了哪些知识有个清楚的认知; (2)掌握目录结构,能复述出来每个知识点下都有哪些内容。 如下图所示,可自行制作思维导图,针对自己薄弱的地方进行复习。 …