| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> [2021-09-06]数据结构第2章-线性表Part2 -> 正文阅读 |
|
[数据结构与算法][2021-09-06]数据结构第2章-线性表Part2 |
文章目录数据结构第2章 - 线性表(Part 2)写在开头由于前面顺序表中的MAX_SIZE并非真正的无限空间而将使最大存储空间受到局限、对于少量数据来说又会浪费很多的内存,插入、删除元素过于缓慢,我们寻求一种更加高效且合理的存储结构——链表。链表由于其使用指针并且动态开辟新的内存区域的方式而成为更受欢迎、使用更广泛的一种线性表存储结构。 线性表存储结构2 - 链表链表1 - 单链表单链表的定义单链表是用一组任意的存储单元存放线性表的元素,通过每个节点存储它下一个数据所在内存地址的指针而存放整张线性表。 定义代码:
是不是非常有趣?这边的存储不再使用像顺序表里面那种开一大堆地方的策略,是用多少开多少,通过我们所熟悉的指针(熟悉吗?)将所有数据块穿起来,一个节点连着一个节点,非常灵活。 不只是在存储上链表展现出其灵活的存储特性,在其增删改查的操作中,链表同样能够实现极优于顺序表的执行效率。 单链表的增删改查这边直接给出力扣上对于链表的设计代码(轻微修改和注释),关于详细实现直接进传送门就好了,这边的数据由于是int,因此链表也只保存int类型的数据。
知识点:单链表中的环由于next是直接存储链表的地址,设想一下,如果一个链表节点的next再次指向它前面的某个节点会怎么样?环就出现啦。 这么好玩的东西我们肯定要找出来啦~ 该怎么找呢? 1.快慢指针:判环想一下下面的场景:两个人跑步,一个快一个慢,那么在环形的操场上,跑得快的肯定能在跑完一圈之后追上那个跑的慢的同学;反过来说,如果这个跑得快的能够和跑的慢的相遇,那么说明他们在一个环里面~ 抽象一下,快慢两个指针,如果快指针走到头了,那么就没有环,但当它和慢指针相遇了,那么就说明到环里了 这个只要给出代码,就不难理解:
2.快慢指针:寻找入口发现了环,怎么找到环的入口呢?由于快指针比慢指针多走了一圈,那么此时将慢指针向前一步,快指针从头重新以和慢指针一样的速度向后,就能在环的入口相遇啦
代码:
知识点:反转链表有时候我们需要将一个链表头尾反转,该怎么做呢?由于我们现在讲的还是单链表,这边给出我非常喜欢的一种反转方法,想想链表的操作,相信多看几遍就会啦:
单链表总结单链表是一种灵活的存储线性数据的方式,其中的一些技巧(双指针等)可以推广出很多解题方法,可以自己找点题目,体会一下。 写在最后下一章将介绍双链表,即既存储该节点上一个元素地址,也存储该节点下一个元素地址的链表。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年10日历 | -2025/10/17 13:56:28- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |