【数据结构与算法】顺序表

顺序表

  • 一.顺序表的原理
    • 1.是什么
    • 2.数据结构
  • 二.顺序表的初始化
  • 三.顺序表增加元素
  • 四.顺序表插入元素
  • 五.顺序表删除元素
  • 六.顺序表的销毁
  • 七.总结

一.顺序表的原理

1.是什么

顺序表是一种线性的结构,类似于数组,但是中间不能有空值.
元素顺序地存储在一段连续的内存空间中.
顺序表中的元素类型是相同的.
顺序表的大小是固定的.
查找的速度很快,但是插入和删除需要移动大量的元素.
适用于元素访问频繁,但插入和删除操作较少的场景。

2.数据结构

包含一个基地址指针,一个记录当前个数的长度,和一个初始化顺序表的大小的结构体.
在这里插入图片描述
顺序表里面什么类型的都可以,我这里是自定义的人类结构体.
在这里插入图片描述

二.顺序表的初始化

初始化我们就需要对结构体的3个值进行赋值.
基地址,我们new手动开辟堆区内存
当前长度初始化为0
内存大小自己设定
在这里插入图片描述
当然这里做了一下防御性编程,如果堆区内存没有开辟成功就直接返回.
随便定义的一个宏.
在这里插入图片描述

三.顺序表增加元素

因为我们手动开辟的空间是一个数组,所以我们可以通过下标来进行添加数据.
因为我们添加数据是一个一个进行添加,相当于尾插法,而且数组的下标是从0开始.
所以我们可以直接通过,当前长度为下标进行添加,然后对当前长度加1.
在这里插入图片描述
当然如果内存满了就添加不了了,直接退出.

四.顺序表插入元素

插入元素就很好玩了,需要进行乾坤大罗伊,容我画个图,带你理解.
在这里插入图片描述
所以当我们要在数组某个位置插入一个图的时候,我们也需要进行移动.
那么如何能达到这种移动的效果呢,其实就是相当于覆盖,将前一个的值赋值到后面一个值.
为了保证值不受影响,我们从后往前进行赋值.
在这里插入图片描述
参数i是插入的位置,people是插入的元素.
我们需要做防御性编程,插入的位置不能离谱,还有满了就不能插了
从当前有的最后一个值的后一个开始,依次将前面的值赋值到后面.
在要插入的位置就设置当前要插入的值.

五.顺序表删除元素

原理跟插入是差不多的,也需要大量的移动.
只不过这次是将后面的值赋值到前面.
相当于是将要删除的值进行了覆盖,从而达到元素删除的效果.
在这里插入图片描述
当然,这里有一个要删除的特殊位置,那就是当删除的是顺序表的尾巴的时候,我们可以直接对当前值减一即可,访问不到.相当于就是删除.

六.顺序表的销毁

这个就很简单了,newdelete来进行销毁.
在这里插入图片描述
如果基地址不为空,就进行销毁,同时将长度和大小都设置为0.

七.总结

总的来说,顺序表的应用十分广泛,它在许多领域中都发挥着重要的作用,特别是当需要快速随机访问数据时。
相当于是数组的升级版可以进行插入和删除数据,使其更加的灵活.

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

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

相关文章

单关节电机动力学辨识

这是一个单关节电机的动力学辨识过程,这是一个yaw轴转动电机的动力学辨识过程 1、动力学建模 (1)整体动力学 F J α f F J\alpha f FJαf 单关节的物理量包括惯性项、离心力和科氏力、摩擦力。这里忽略离心力和科氏力,据说…

SolidEdge二次开发(C#)-环境配置

文章目录 1、前言2、环境配置2.1 安装Solidworks20242.2 安装VS20222.3 查看Com组件2.3.1 在VS2022中创建一个wpf工程项目2.3.2 添加com组件 1、前言 SolidEdge是Siemens PLM Software公司旗下的三维CAD软件,采用Siemens PLM Software公司自己拥有专利的Parasolid作…

js动画插件-vue

分享一个动画插件 学习 动画插件 是进入大厂的必备技能 首先我们需要先学会 去使用js 动画 封装好的 GreenSock 动画平台 (GSAP) greensock.com/gsap/ 就是这个插件 我现在分享一个用例 其实很简单 但是 具体的属性 和很多 内容需要慢慢使用 慢慢看…

C++客户端Qt开发——系统相关(文件操作)

2.文件操作 ①输入输出设备类 在Qt中,文件读写的类为QFile。QFile的父类为QFileDevice,QFileDevice提供了文件交互操作的底层功能。QFileDevice的父类是QIODevice,QIODevice的父类为QObject。 QIODevice是Qt中所有输入输出设备(input/output device,简称I/O设备)…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 环形字符串最长子串(200分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 🍿 最新华为OD机试D卷目录,全、新、准,题目覆盖率达 95% 以上,支持题目在线…

【React】useState:状态管理的基石

文章目录 一、什么是 useState?二、useState 的基本用法三、useState 的工作原理四、高级用法五、最佳实践 在现代前端开发中,React 是一个非常流行的库,而 useState 是 React 中最重要的 Hook 之一。useState 使得函数组件能够拥有自己的状态…

深入理解synchronized(简记)

深入理解synchronized 管程synchronized对象的内存布局锁状态记录锁对象状态转换偏向锁轻量级锁锁对象转换总结 管程synchronized Java 参考了 MESA 模型,语言内置的管程(synchronized)对 MESA 模型进行了精简。 对象的内存布局 对象头 Mar…

Nginx笔记(一)

一、Nginx简介 Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器 [13],同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,公开版本1.…

如何在宝塔面板给域名配置 SSL 证书

首先需要有证书 这里以阿里云为例 1. 首先进入到 SSL 证书管理控制台 选择个人测试证书,并点击购买 免费的可以使用三个月。 购买完成之后回到控制台。 点击创建证书,将标红的地方填写,其他默认就好。 然后提交审核就行。 这里需要对域名…

【React】组件:全面解析现代前端开发的基石

文章目录 一、什么是组件?二、组件的类型三、组件的生命周期四、状态管理五、属性传递六、组合与继承七、最佳实践 在现代前端开发中,React 已成为开发者构建用户界面的首选框架之一。React 的强大之处在于其组件化设计,允许开发者将 UI 拆分…

Wireshark自定义协议解析器插件C语言开发二

接着上一篇安装文章,在wireshark插件开发完成后,仿真的dll并不能直接分享使用,当另外电脑缺少必要的c环境或依赖项时候,在打开wireshark软件时候即会报错。 上图是仿真得到的dll文件路径,但是并不能在其他没有安装了v…

linux驱动--中断

中断号和中断的申请 中断号的添加-----定义设备节点,描述当前设备 通过设备树文件获取 /dts/xxxx.dts文件中进行设备的设置 在dts设备树文件中进行设备的定义,包括继承的设备,中断号的设置 需要对我们的dts设备树文件进行编译&#xff0…

天机学堂第二天项目 添加我的课表 项目总结

目录 根据产品原型得到数据库表结构 RabbitMq监听 构造器注入 幂等 mybatisplus 分页查询的多种写法 在new page里面添加排序 查询条件中 用orderBydESC指定排序 ​编辑 链式编程中使用page指定排序 stream流 ​编辑 在网关中解析token 根据产品原型得到数据库表结构 根…

基于物联网的区块链算力网络,IGP/BGP协议

目录 基于物联网的区块链算力网络 IGP/BGP协议 IGP(内部网关协议) BGP(边界网关协议) 内部使用ISP的外部使用BGP的原因 一、网络规模和复杂性 二、路由协议的特性 三、满足业务需求 四、结论 基于物联网的区块链算力网络 通 过 多个物联网传感器将本地计算…

使用在UE5中使用AirSim插件Eigen库头文件引用报错,出现报错的解决方式

一、概述 如图所示&#xff0c;用红线圈出的两条头文件引用会报错&#xff0c;提示无法找到他们&#xff0c;但是可以发现的是&#xff0c;他们的路径书写是没有问题的。 // #include <Source/Airlib/deps/eigen3/Eigen/Core> // #include <Source/Airlib/deps/eigen…

【网络爬虫技术】(1·绪论)

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;网络爬虫开发技术入门_十二月的猫的博客-CSDN博客 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 目录 …

日拱一卒 | JVM

文章目录 什么是JVM&#xff1f;JVM的组成JVM的大致工作流程JVM的内存模型 什么是JVM&#xff1f; 我们知道Java面试&#xff0c;只要你的简历上写了了解JVM&#xff0c;那么你就必然会被问到以下问题&#xff1a; 什么是JVM&#xff1f;简单说一下JVM的内存模型&#xff1f;…

梯度下降算法,gradient descent algorithm

定义&#xff1a;是一个优化算法&#xff0c;也成最速下降算法&#xff0c;主要的部的士通过迭代找到目标函数的最小值&#xff0c;或者收敛到最小值。 说人话就是求一个函数的极值点&#xff0c;极大值或者极小值 算法过程中有几个超参数&#xff1a; 学习率n&#xff0c;又称…

代码随想录算法训练营第22天-leetcode-回溯算法part01:

#回溯算法理论基础 能解决的问题&#xff1a; 组合问题&#xff1a;N个数里面按一定规则找出k个数的集合切割问题&#xff1a;一个字符串按一定规则有几种切割方式子集问题&#xff1a;一个N个数的集合里有多少符合条件的子集排列问题&#xff1a;N个数按一定规则全排列&…

大数据——HBase原理

摘要 HBase 是一个开源的、非关系型的分布式数据库系统&#xff0c;主要用于存储海量的结构化和半结构化数据。它是基于谷歌的 Bigtable 论文实现的&#xff0c;运行在 Hadoop 分布式文件系统&#xff08;HDFS&#xff09;之上&#xff0c;并且可以与 Hadoop 生态系统的其他组…