数据结构(栈、队列、链表)

news2024/9/22 6:00:30

文章目录

  • 前言
      • 数据结构(栈、队列、链表)
        • 1、栈
        • 2、队列
        • 3、链表
          • 3.1、单向链表结构
          • 3.2、双向链表结构

前言

  如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。
  而且听说点赞的人每天的运气都不会太差,实在白嫖的话,那欢迎常来啊!!!


数据结构(栈、队列、链表)

1、栈

概述:
1)一种特殊的线性表,仅能在线性表的一端操作;
2)栈顶允许操作,栈底不允许操作;
3)先进后出,或者说是后进先出;
术语:
进入栈的过程叫做进栈;
出去栈的过程叫做出栈;
栈的最上面的元素称为栈顶;
栈的最内的元素,称为栈底;

例子 :1、2、3、4、5
1、2、3依次进栈,
然后出栈、3、2
在进栈4、5
过程如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、队列

概述:
1)一种特殊的线性表
2)先进先出
3)只允许在队列头进行删除操作
4)只允许在队列尾进行插入操作
术语:
进行插入操作叫做入队;
进行删除操作叫做出队;
示例:
在这里插入图片描述

3、链表

概述:
链表是物理存储单元上非连续的、非顺序的存储结构,数据元素的逻辑顺序是通过链表的指针地址实现,每个元素包含两个结点,一个是存储元素的数据域 (内存空间),另一个是指向下一个结点地址的指针域。根据指针的指向,链表能形成不同的结构,例如单链表,双向链表,循环链表等。

3.1、单向链表结构

在这里插入图片描述
术语:
1)item:数据域
2)next:指针域
3)node:节点
4)head:头指针
说明:
head指向链表中第一个节点;
链表中最后一个节点指向null;
当链表中无节点的时候,head指向null;

特点:
1)当链表创建时,无需考虑创建的大小,且大小可以无限延续;
2)访问元素时,链表无法跳过前一节点访问后续节点,即无法通过下标进行访问,只能从头遍历,找到想要访问的元素;
3)链表在插入和删除时,时间复杂度O(1),效率较高;
4)链表查找效率低;

注意事项:
在java中没有指针的概念,而类似的指针在java中都是通过引用来实现的,但是为了突出我们的理解,仍然通过指针进行描述,下面是用代码来描述在java中,如何用引用来实现指针的逻辑。

public LNode{
   int data;  //数据域
   LNode next; //下一个指针的引用
}
3.2、双向链表结构

相比单链表,除了包含单链表的部分,还增加的pre前一个节点的指针。

在这里插入图片描述
结构说明:
双向链表不仅有head指针指向第一个节点,而且有tail指针指向最后一个节点
每一个节点由三部分组成:item储存数据、prev指向前一个节点、next指向后一个节点
双向链表的第一个节点的prev指向null
双向链表的最后一个节点的next指向null

特点:
双向链表即可从头遍历到尾,也可以从尾遍历到头,因为双向链表的过程是相向的,
因为它既有指向前一个节点的指针也有指向后一节点的指针;

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

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

相关文章

多边形点集排序

一、问题描述已知多边形点集P {P1, P2, ... , PN},其排列顺序是杂乱,依次连接这N个点,无法形成确定的多边形,需要对点集P进行排序后,再绘制多边形。二、排序规则点集排序过程中,关键在于如何定义点的大小关…

STC32G 时钟系统

文章目录时钟系统代码配置总结时钟系统 系统时钟有4个时钟源可供选择: 内部高精度IRC内部32KHzIRC(精度较低)外部晶振内部PLL输出时钟 主要关心的是两个指标:SYSclk和HSCLK SYSclk是系统的时钟,决定了指令执行速度…

Android 深入系统完全讲解(三)

系统调用 操作系统提供了一些方法,让用户层可以调用,而为了安全起见,这些方法调用,都是在内核空间。于是,用户调用的时候,就会有个动作,叫做陷入内核。 当用户调用系统方法的时候,系…

【k8s-device plugin】如何编写 k8s device plugin

参考 Device Plugin 入门笔记(一) Device Plugin 入门笔记(二) 从零开始入门 K8s:GPU 管理和 Device Plugin 工作机制 Kubernetes开发知识–device-plugin的实现 https://github.com/oceanweave/cola-device-plugi…

基于springboot的智慧物业管理系统的设计与实现(前后端分离)

项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下,你想解决的问…

mysql 中间件 mycat2 的详细安装及配置步骤

下载 首先打开mycat官网:MyCat2 右上角下载里面有个文件下载服务,点进去发现无法访问 这里需要配置一下host,把下面内容复制到host文件中。host文件位置在C:\Windows\System32\drivers\etc 210.51.26.184 mycat.org.cn www.mycat.org.cn …

第五篇 - 数组的劫持

一,前言 上篇,主要介绍了 Vue 数据初始化流程中,对象属性的深层劫持是如何实现的 核心思路就是递归,主要流程如下; 1.通过 data isFunction(data) ? data.call(vm) : data;处理后的 data 一定是对象类型 2.通过 d…

如何定位Bug——Qt

1. 前言 在写程序的过程中,不可避免出现各种Bug,如何快速的定位到Bug的位置,是程序员必备的技能之一。 2. 几种方法 2.1. 逻辑分析 根据程序所出的问题,分析问题可能所在的几个位置,通过逻辑分析找出Bug&…

从 Nginx Ingress 窥探云原生网关选型

作者: 魁予 现今有越来越多的企业开始采纳云原生理念进行应用架构转型。而 K8s 和微服务是云原生的两大支柱,随着云原生浪潮而被广泛应用。 对多数应用而言,提供对外服务的使命并不会改变,相比于原来的单体应用,微服…

VUE3中,使用.env.development和.env.production

在实际项目开发过程中,可能开发环境和生产(测试)环境不一样,经常需要修改配置常量,才能满足对应的环境,才能使软件运行起来。在vue3中可以使用2个文件进行区分。 .env.development:开发环境 .…

Mysql存储引擎 初级(自用笔记)

内容来自于(https://www.bilibili.com/video/BV1Kr4y1i7ru?p58&vd_source3cf72bb393b8cc11b96c6d4bfbcbd890) 1.存储引擎 1.1Mysql体系结构 1.2什么是存储引擎呢? 存储引擎就是存储数据,建立索引,更新,查询数据等技术的实现方式. 存储引擎是基于表的,而不是基于数据库的…

魔兽世界开服教程wow服务器框架Trinirycore构建

首先明杰先给各位普及一下TrinityCore是什么TrinityCore 是c实现MMORPG框架来自MaNGOS,大型网络对象服务,随着时间的推移,该项目代码广泛的优化,改善和清理代码。需要准备的架设工具:端(版本)、…

皮尔逊相关性分析一文详解+python实例代码

目录 前言 一、数值类型 二、皮尔逊系数使用场景 二、皮尔逊相关系数(Pearson correlation) 1.定义 2.线性关系判定 3.正态检验 1.KS检验 4.计算代码 点关注,防走丢,如有纰漏之处,请留言指教,非常感谢 参阅 前言 相关性…

MySQL中这10个小玩意,让人眼前一亮

我最近几年用MYSQL数据库挺多的,发现了一些非常有用的小玩意,今天拿出来分享到大家,希望对你会有所帮助。 1.group_concat 在我们平常的工作中,使用group by进行分组的场景,是非常多的。 比如想统计出用户表中&…

给Kylin iso中添加自定义rpm包

前言 在日常产品交付中会有如下需求: 客户自己安装centos / ubuntu / kylin iso,然后我们把rpm包给到客户 我们直接将rpm包封装到iso,给客户交付整体iso,这样不管是对于客户还是对于公司都是最省心的,会避免很多因为系…

疯狂2023:科技迎来爆发之年,关注云计算这些方向

临近年末,熬过艰难苦恨繁霜鬓的2022,打工人已默默扛起来年的OKR 。根据市场研究机构Garner预测,2023将迎来科技爆发之年,最值得关注的云计算趋势是AI和ML、多云和混合云解决方案、物联网、云安全等。 及时了解不断变化的技术格局…

汇聚数据库创新力量 GBASE携手openGauss助企业数字化转型

12月29日,openGauss Summit 2022于线上举行。本次大会是由openGauss开源数据库社区联合行业组织、伙伴及客户共同举办的一场年度数据库产业界交流与分享峰会。天津南大通用数据技术股份有限公司(简称:GBASE)首次以openGauss社区理…

PDF转换成JPG图片怎么转换?这两招轻松搞定

PDF转换成JPG图片怎么转换?PDF文件是我们常用的一类文件,在现在的办公环境中,PDF真的用途很广,不仅是日常发送文件,还有学习工作中都会用到,不过有时候我们也需要将PDF文件转换成其他的格式,比如…

JUC并发编程学习笔记(五)读写锁和阻塞队列

8 读写锁 8.1 悲观锁和乐观锁介绍 回顾悲观锁和乐观锁的概念 悲观锁:单独每个人完成事情的时候,执行上锁解锁。解决并发中的问题,不支持并发操作,只能一个一个操作,效率低 顾名思义,就是比较悲观的锁&am…

配置文件中命名空间的作用

命名空间 实际上就是一个由程序设计者命名的内存区域,程序设计者可以根据需要指定一些有名字的空间域,把一些全局实体分别放在各个命名空间中,从而与其他全局实体分隔开来。 命名空间的作用 是建立一些互相分隔的作用域,把一些…