大家好呀,我是蛋蛋。
数组的文章中给臭宝们说过,连续的内存使得数组在进行插入和删除时需要移动大量元素,这就意味着要耗费时间。
在数据结构与算法中,快男才是大家的最爱,像插入和删除这么持久的蓝孩子显然不受待见。
后来,大家就想方设法帮助它们变快。
那么有没有这么一种数据结构可以达成这一目的呢?
链表就这么被整出来了。
相比于数组,链表是稍微复杂一些的数据结构,但是不难,只要跟着本蛋就能学会。
链表
首先什么是链表?
线性表的链式存储结构生成的表,叫做链表。
那么什么是链式存储结构咧?
链式存储结构是指用一组任意的存储单元存储线性表的数据元素,通过指针连接串联起来。
这里的“任意”指的就是,**存储单元可以连续也可以不连续,这就意味着它们可以是内存中任何未被占用的地方。**有味儿点讲就是只要内存这个厕所里空着的茅坑,你就随便蹲。
链表中的存储单元叫做节点。它和数组中只存数据信息不同,每个节点分为两部分:数据域和指针域。数据域存储的数据,指针域存储着同一个表里下一个节点的位置。
因为链表家族里的兄弟姐妹太多,在这里咧我只讲常见的几种链表结构:单链表、双向链表。
毕竟再多,我写的就累死了。。
单链表
n 个节点可以链接成一个链表,如果链表中的每个节点只包含一个指针域,这个链表就叫做单链表。
单链表的指针域指向的是下一个节点的地址,我们把指向下个节点地址的指针叫做后继指针。
单链表的第一个节