【数据结构】栈、队列、数组、列表


数据结构是什么?

  • 数据结构是计算机存储、组织数据的方式

是指数据相互之间是以什么方式排列在一起的。

  • 数据结构是为了更加方便的管理和使用数据,需要结合具体的业务场景来进行选择。
  • 一般情况下,精心选择的数据结构可以带来更高的运行或者存储效率。

数据结构有哪些?

image.png

学习核心 1,每种数据结构长什么样子? 2, 如何添加数据? 3,如何删除数据?


1. 栈:

方法运行的时候进栈,执行完出栈。

栈示意图:

栈的特点:后进先出,先进后出


2. 队列:


队列的特点:先进先出,后进后出


  • 笑话中体会栈和队列的特点

image.png


3. 数组:

在空间内连续
image.png
数组是一种查询快,增删慢的模型

  • 查询速度快: 查询数据通过地址值和索引定位,查询任意数据耗时相同。(元素在内存中是连续存储的)
  • 删除效率低: 要将原始数据删除,同时后面每个数据前移。
  • 添加效率极低: 添加位置 后面的每个数据后移,再添加元素。

4. 链表:

它的特点和数组的特点正好对立:
查询慢,增删效率高(相对数组)

它由一个个不同的结点连接而成: 每个结点是独立的对象,在内存内是不连续的,每个结点包含数据值和下一个结点的地址值

结构图:

  • 链表查询慢,无论查询哪个数据都要从头开始找。

  • 链表增删相对快(对比数组)

添加元素时:不用像数组那样 添加位置后面的每个数据后移,再添加元素。他会在添加位置 与 两端结点连接。 如要添加数据 B:

image.png

若此时要删除数据BD之间的数据C:

  1. 数据B对应的下一个数据地址指向数据D
  2. 数据C删除

image.png


双向链表:

单向链表只能单向查找

image.png

双向链表查找元素时 ,会先判断 离头部近 还是离尾部近,提升了查找效率

-------小结:image.png

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

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

相关文章

MongoDB日期存储与查询、@Query、嵌套字段查询实战总结

缘由 MongoDB数据库如下: 如上截图,使用MongoDB客户端工具DataGrip,在filter过滤框输入{ profiles.alias: 逆天子, profiles.channel: },即可实现昵称和渠道多个嵌套字段过滤查询。 现有业务需求:用Java代码来查询…

LeetCode.2861. 最大合金数

题目 题目链接 分析 这道题目一定要多读几遍,才能理解。 大意就是你有钱budget 和 库存stock的金属零件,让你从一堆机器里面选择一种机器可以合成最多金属的数量是多少,这些机器合成金属需要的零件数目是不一样的,composition…

程序员必备!10款实用便捷的Git可视化管理工具

前言 俗话说得好“工欲善其事,必先利其器”,合理的选择和使用可视化的管理工具可以降低技术入门和使用的门槛。我们在团队开发中统一某个开发工具的使用能够大大降低沟通成本,提高协作沟通效率。今天给大家分享10款实用便捷的Git可视化管理工…

(免费领源码)java#SSM#mysql疫情时期人员流调平台69124-计算机毕业设计项目选题推荐

目 录 摘要 1 绪论 1.1研究意义 1.2开发现状 1.3系统开发技术的特色 1.4 ssm框架介绍 1.5论文结构与章节安排 2 疫情时期人员流调平台系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1数据增加流程 2.2.2数据修改流程 2.2.3数据删除流程 2.3 系统功能分析 2.3.1…

VisionMaster图像拼接功能实现

由于硬件或安装环境限制,单个相机视野无法覆盖整个视野,但实际应用需要全视野图像时,可以拍摄物体的多个部分拼接成一张整图。VM提供图像拼接工具对图像进行拼接。 使用标定图进行标定建模是最重要的一步,成功标定后可以将图像无…

python222网站实战(SpringBoot+SpringSecurity+MybatisPlus+thymeleaf+layui)-帖子管理实现

锋哥原创的SpringbootLayui python222网站实战: python222网站实战课程视频教程(SpringBootPython爬虫实战) ( 火爆连载更新中... )_哔哩哔哩_bilibilipython222网站实战课程视频教程(SpringBootPython爬虫实战) ( 火…

【c++】高精度算法(洛谷刷题2024)扫雷游戏详解

系列文章目录 第二题:扫雷游戏 视频讲解:http://【洛谷题单 - 算法 - 高精度】https://www.bilibili.com/video/BV1Ym4y1s7BD?vd_source66a11ab493493f42b08b31246a932bbb 文章目录 目录 系列文章目录 文章目录 前言 一、题目分析以及思考 二、代…

多维时序 | Matlab实现CNN-BiGRU-Mutilhead-Attention卷积双向门控循环单元融合多头注意力机制多变量时间序列预测

多维时序 | Matlab实现CNN-BiGRU-Mutilhead-Attention卷积双向门控循环单元融合多头注意力机制多变量时间序列预测 目录 多维时序 | Matlab实现CNN-BiGRU-Mutilhead-Attention卷积双向门控循环单元融合多头注意力机制多变量时间序列预测效果一览基本介绍程序设计参考资料 效果一…

qemu的安装

1、简介 QEMU(Quick EMUlator)是一个开源的处理器模拟器,它可以在一种硬件平台上模拟另一种硬件平台,从而运行各种不同的操作系统。QEMU通过动态二进制翻译来实现高性能的模拟,这使得它可以在接近原生性能的速度下运行…

21.云原生之ArgoCD CICD实战(部分待补充)

云原生专栏大纲 文章目录 部署项目介绍项目结构介绍GitLab CI/CDGitLab CI/CD主要特点和功能 部署测试argocd的cd过程CICD工作流准备工作github中工作流文件创建gitlab中工作流文件创建【实操待补充】GitLab CI示例 数据加密之seale sealedBitnami Sealed Secrets介绍Bitnami …

basicPython-1

元组 """ 目录: 1.创建元组 2.元组的拼接 3.元组的解压赋值 4.元组的切片 5.元组的元素的索引 6.元组的嵌套 7.统计某个元素的个数 """"""创建元组(元组不可变)""" # 1.强制:tuple() # 2.普通 tuple_0 (1,) tup…

MYSQL表的约束详解!

文章目录 前言一、空属性二、默认值三、列描述四、zerofill五、主键六、自增长七、唯一键八、外键 前言 真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保证数据…

VS生成报错:MSB8036 The Windows SDK version 8.1 was not found.找不到 Windows SDK 版本 8.1

目录 一、查看本机SDK二、 解决法一:适配本电脑的SDK法二:下载SDK 8.1 VS生成报错:MSB8036 找不到 Windows SDK 版本 8.1。请安装所需版本的 Windows SDK,或者在项目属性页中或通过右键单击解决方案并选择“重定解决方案目标”来更…

NAT地址转换协议

目录 NAT应用场景静态NAT动态NATNAPTEasy IPNAT服务器 点击跳转NAT配置(动态nat,静态nat,Easy IP) NAT应用场景 - 随着网络设备的数量不断增长,对IPv4地址的需求也不断增加,导致可用IPv4地址空间逐渐耗尽…

C++17中lambda表达式新增加支持的features

C17中对lambda表达式新增加了2种features:lambda capture of *this和constexpr lambda 1.lambda capture of *this: *this:拷贝当前对象,创建副本:捕获*this意味着该lambda生成的闭包将存储当前对象的一份拷贝 。 this:通过引用捕获。 当你需…

Jmeter接口测试总结

🍅 视频学习:文末有免费的配套视频可观看 🍅 关注公众号【互联网杂货铺】,回复 1 ,免费获取软件测试全套资料,资料在手,涨薪更快 Jmeter介绍&测试准备 Jmeter介绍:Jmeter是软件…

Linux第36步_创建正点原子的TF-A工作区

创建正点原子的TF-A工作区,目的是想查看正点原子的设备树文件“stm32mp157d-atk.dts”和设备树头文件“stm32mp157d-atk.dtsi”,了解设备树是什么样子,为后期基于“ST公司的源码”创建自己的设备树提供参考,同时也是为了学习移植u…

人体组织展示可视化模型:探索生命奥秘的新窗口

在医学领域,人体组织是研究疾病、生理机制和药物作用的关键。然而,传统的组织学研究方法往往局限于切片观察,难以全面、直观地展示组织结构和功能。随着科技的发展,人体组织展示可视化模型为医学研究带来了革命性的变革。 使用山海…

Mysql第一天

数据库概述 1. 为什么要使用数据库 持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用。(可掉电:内存 使用高电压和低电压来区别0和1进行数据的一个存储但是一旦断电了电压都没了 0和1也就没有了)大多数情况下,特别是企 业级应用&#…

计算机毕业设计 | SpringBoot 求职招聘管理系统(附源码)

1,绪论 1.1 开发背景 高学历人群是网络求职者的主体,且结构趋向固定。而在疫情肆虐的今日,线上招聘成了越来越多企业和个人选择的方式。在疫情期间线下招聘转为线上招聘,是疫情防控的需要。不能否定的是新的招聘模式的出现一定会…