开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第3天,点击查看活动详情
对于线性表的存储结构,除了顺序表和线性链表(单链表)外,还有循环链表和双向链表。
首先什么是循环链表, 它与线性链表相同,都是用一组任意的存储单元来存储线性表的数据元素。 不同的地方在于循环链表的最后一个结点是指向头结点的,所以创建链表的时候,最后一个结点需要指向头结点。 如下图所示:
循环链表有如下特征:
- 尾节点可以找到头节点
- 头节点不能找到尾节点
- 如果没有有效数据节点(空链),头节点指向自身
与循环链表不同的是双向链表:双线链表有两个指针域,一个指向直接后继,另一个指向直接前驱。克服了单链表和循环链表只能顺时针向后查找其他节点的缺点。
以下是双向链表的一个结点的示意图:
用指向某结点的指针p代表该结点
结点p的后继的前驱等于结点p本身
结点p的前驱的后继等于结点p本身
以上就是线性表的所有链表形式。
链表由一连串节点组成,每个节点包含任意的实例数据(data fields)和一或两个用来指向明上一个/或下一个节点的位置的链接("links")。链表是一种自我指示数据类型,因为它包含指向另一个相同类型的数据的指针。链表允许插入和移除表上任意位置上的节点,但是不允许随机存取。链表有很多种不同的类型:单向链表,双向链表以及循环链表。
链表结构在计算机的优缺点: 链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。但是链表失去了数组随机读取的优点,同时链表由于增加了结点的指针域,空间开销比较大。
总之,链表是一种很重要的存储结构,以上内容就是关于线性表的链式存储结构的学习。