链式存储之:链表的引出及其简介

news2025/2/2 2:59:31

上篇博客,笔者讲解了一下顺序表ArrayList,对于ArrayList有想法的各位老铁可以看一下:值得思索的:ArrayList和线性表,你确定错过这次机会_念君思宁的博客-CSDN博客值得思索的:ArrayList和线性表,你确定错过这次机会??https://blog.csdn.net/weixin_64308540/article/details/128322151?spm=1001.2014.3001.5502对于这篇博客,算是熬近了笔者的心血,导致最后休息了好几天才缓过来!!既然笔者能写出上篇的文章,那么笔者对于链表,想必也能写出一样优秀的文章,那么就请齿目以待吧!!加油!!

对于顺序表,想必知道的各位老铁已经知道了,不知道的各位老铁再怎么劝说也不一定不知道!!尴尬!!

那么言归正传吧!!

通过上篇博客的学习,对于顺序表,我们可以看出:

顺序表ArrayList:

优点

当给定下标的时候,查找速度非常块(适合给定下标的查找,时间复杂度为O(1)

缺点

插入必须得挪动元素,才能插入(时间复杂度为O(N))

删除必须得挪动元素,才能删除(时间复杂度为O(N))

扩容每次的扩容也会浪费资源的(有10个元素,想要放到第11个元素里面,会进行1.5倍扩容,变成15个,但是我们只有11个元素,这就意味着,我们会浪费掉4个空间,……一次类推,当数据越来越大的时候,……因此,每次扩容也是浪费空间的!!

既然顺序表有着那麽多的缺点??那么有没有一种方式,可以减少一点顺序表的缺点呢??因此,链表就可以引出来了!!

链式存储:链表!

链表是一种物理存储结构上非连续存储结构,数据元素的逻辑顺序是通过链表中的引用链接次序实现的 。

链表就是跟火车的性质差不多,一个节点一个节点的有序联立起来!!

 链表是由一个节点一个节点组成的!每个节点至少要包含两部分!

 因此,我们有着:

注意:

1.从上图可以看出:链式结构在逻辑上是连续的,但是在物理上不一定连续!

2.现实中的节点一般都是从堆上申请出来的

3.从堆上申请的空间是按照一定的策略来分配的,两次申请的空间可能连续,也可能不连续!

其实,在数据结构中,链表是分种类的!!

单向,双向,带头,不带头,循环,非循环!

上面的几种来进行排列组合,我们可以发现:一共有8种链表组合!!

单向带头循环双向带头循环
单向带头非循环双向带头非循环
单向不带头循环双向不带头循环
单向不带头非循环双向不带头非循环

其中,在上述的8种组合种,我们在学习的过程中,主要强调的是:

单向不带头非循环:笔试面试都是考这个结构

双向不带头非循环:集合类底层是这样操作的!

下面笔者用画图的方式,来带领大家认识一下上述的8种组合!!

1.单向带头非循环

 在这里需要注意的是:head永远指向头节点,当把元素11删了,头节点仍然不会发生改变

2.单向不带头非循环

 对于这个:单向不带头非循环:结构简单,一般不会用来存储数据,实际中更多的是作为其他数据结构的子结构!如:哈希桶,用到的就是链表,等等,面试笔试中用到的也是很多!!

对于这个操作,head虽然指向11处的节点,说明此时11处的节点是这个链表的头部,但是,当我们把11这个节点给删除了以后,此时head就指向12处的节点,因此头节点head也就改变为:12处的节点了!!

3.单向带头循环

 因此,我们可以发现:单向的链表,是一直从前往后!!

而接下来我们要进行的是双向的链表:可以从前往后,也可以进行从后往前!

双向的节点

 因此,我们来认识一下:双向不带头非循环的节点:

 对于双向的其他组合,笔者就不再进行强调了!毕竟很少使用!我们在后续也不会进行讲解!

经过上面的几个讲解,我们可以看出来:

链表跟顺序表的区别:

链表:物理上(真实的内存)不一定是连续的,逻辑上(指向下一个)是连续的

顺序表:物理上和逻辑上都是连续的!

到此,笔者变将链表的基础知识讲解完了,那么后续的一篇博客,就该讲解链表的实现了!!有想法的各位老铁,可以后续跟踪笔者博客哟!

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

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

相关文章

Html5 canvas创意特效合集

Canvas就像一块画布,我们可以通过调用脚本在Canvas上绘制任意形状,甚至是制作动画。本文就是收集了很多非常富有创意的一些canvas动画特效例子,这些例子都非常适合大家学习。 1.3D篝火动画特效 这款篝火特效是基于 three.js 和 canvas 制作的…

博实结将在创业板上会:计划募资25亿元,周小强为实际控制人

近日,深圳市博实结科技股份有限公司(下称“博实结”)在深圳证券交易所递交招股书(上会稿),准备在创业板上市。据贝多财经了解,博实结将于2022年12月23日接受创业板上市委审议,一同上…

Vue3----props和emit的使用

作用:父组件通过 props 向下传递数据给子组件; 用途:当有一种类型的组件需要被使用多次,每一次的调用都只是特定的地方不同,就好像一张个人简介表,每次填的人的信息都不同,但是结构都是一样的。…

Nacos学习笔记 (2)Nacos基础核心特性

内容: Nacos架构及其核心特性,包括服务注册、服务发现、发布与获取配置特性,以及Nacos Spring关键特性。 本文内容,参考 Nacos 官网与 《Nacos架构&原理》一书。 1. Nacos 架构 详情推荐参考: (1&a…

服务器取证——服务器基础知识

目录 一、服务器基本介绍 (一)概念 (二)构成 (三) 种类 (四)与pc区别 二、 磁盘阵列RAID (一)概念 (二)产生原因 &#xff0…

【Django】第二课 银行账户管理系统开发

概念 本文在上一篇文章基础之前进行构建和完善 账户信息的分页显示 用户通过点击首页的“查询账户”,进入账户信息查询页面 则点击该按钮触发点击事件,向django服务器发出请求 接着我们在urls.py中需要定义与该地址进行匹配的地址,并匹配后…

Java on VS Code 12月更新年度亮点回顾|实时内存视图、注入处理器支持与用户体验改进

作者:Nick Zhu - Senior Program Manager, Developer Division at Microsoft 排版:Alan Wang 大家好,一年的时间过得很快,我们已经来到了2022年的年底。回顾 2022 年,我们的产品也经历了很多的迭代,在此之中…

甲氧基聚乙二醇二苯并环辛烯mPEG-DBCO简介DBCO-mPEG科研实验用试剂

中文名:甲氧基聚乙二醇二苯并环辛烯 英文名:mPEG-DBCO;DBCO-mPEG 分子量: 1K.2K.5K.10k.20k.30k 溶解度: DMSO, DMF 储存条件: -20C 状态:淡黄色到白色固体,或者半固体,取决于分子量。 溶解性&#x…

网心科技马婷:探寻边缘计算的“诗和远方”

​​LiveVideoStackCon 2022上海站活动结束,每一次大会的举办对音视频领域都是新的洗礼,同时也带来了新的收获和挑战。随着音视频技术在各种行业、场景中的逐渐成熟,更多的业务形态、产品变换 、跨界案例等越来越多的部分值得我们探寻和研究。…

「网络工程师必会技能」-路由器介绍和路由器基本配置

「网络工程师必会技能」-路由器介绍和路由器基本配置,这是每个网络必须会的技能,不是你有证书就一个网络工程师了哦! 以Cisco路由器为例说明: (1)访问路由器。访问路由器与访问交换机一样,可以…

医院陪护小程序,专业的事情交给专业的人

陪诊服务这几年一直受到人们的好评,有了医院陪护小程序之后一些无法居家照顾老人的子女可以通过小程序为老人预约服务,陪诊平台的出现还让陪诊员有了正规的接单平台,不仅方便了人们下单找陪诊员还可以对陪诊人员坐正规的管理。那么在开发医院…

33.前端笔记-CSS3-2D转换

目录1、转换2、二维坐标系2.1 2D转换之移动translate2.2 2D旋转之rotate练习1练习2练习32.3 2D转换之缩放scale练习1练习22D转换综合写法转换综合练习1、转换 转换transform是CSS3中具有颠覆性的特征之一,可以实现元素的位移、旋转、缩放等效果 2、二维坐标系 2.…

Fabric.js 修改画布交互方式到底有什么用?

本文简介 点赞 关注 收藏 学会了 fabric.js 为我们提供了很多厉害的方法。今天要搞明白的一个东西是 canvas.interactive 。 官方文档对 canvas.interactive 的解释是: Indicates that canvas is interactive. This property should not be changed. canvas.in…

FPU与VFP最全面解释

本文希望能将FPU以及ARM中的FPU介绍清楚。 1. FPU(Floating-Point Unit) 浮点运算单元是处理器内部用于执行浮点数计算的逻辑部件,或者说硬件电路。不是所有的处理器都有该功能。浮点运算满足IEEE 754的标准,所谓IEEE 754标准&a…

关于Linux的动静态库

文章目录什么是动静态库生成静态库生成发布生成动态库发布使用库使用静态库查看系统头文件路径查看系统库文件路径使用库文件和头文件指定路径搜索头文件卸载库使用动态库动态库的运行搜索路径什么是动静态库 静态库(.a):程序在编译链接的时…

再携手,齐并进!菊风助力宁波银行坐席PUSH外呼项目

随着“金融数字化”逐步成为金融行业的新浪潮,运用更加灵活的触达手段提升营销效果,促成业务闭环愈发成为银行业等金融机构角逐数字化转型成功的关键。 在此背景下,金融机构对于实时音视频技术的应用也从普遍的「呼入」需求逐步扩展到创新的…

LinkedHashSet源码解析

LinkedHashSet源码解析 问题 (1)LinkedHashSet 的底层使用什么存储元素? (2)LinkedHashSet 与 HashSet 有什么不同? (3)LinkedHashSet 是有序的吗? (4&a…

Vue2与Vue3 setup的使用差异与对比

最近一直在做vue2的技术栈升级,于是心血来潮,就想要不写篇文章总结一下vue2和vue3在使用上的不同吧,于是乎,我们这就开始吧! 首先说明一下,vue3有多种写法,本文使用setup语法糖,不考…

硬核!Github 星标 79.4K 的阿里强推 Java 面试参考指南到底有多强?

谈到 Java 面试,相信大家第一时间脑子里想到的词肯定是金三银四,金九银十。好像大家的潜意识里做 Java 开发的都得在这个时候才能出去面试,跳槽成功率才高!但 LZ 不这么认为,LZ 觉得我们做技术的一生中会遇到很多大大小…

组件技术--设计--jsp+servlet+bean+MySQL 简单的登录注册案例

JavaBeanMySQLjspservlet 简单的登录注册案例登录注册案例需求核心系统组成Javaweb项目框架基本思想BeancounterUserDaoUserDaoservletLoginCljspindex.jspLoginServlet.jspregister.jspregisterMessage.jspwelcome.jsptargetpom.xmlWEB-INFweb.xml登录注册案例需求 本项目利用…