线性表中其他链表的介绍

83 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第3天,点击查看活动详情

对于线性表的存储结构,除了顺序表和线性链表(单链表)外,还有循环链表和双向链表。

首先什么是循环链表, 它与线性链表相同,都是用一组任意的存储单元来存储线性表的数据元素。 不同的地方在于循环链表的最后一个结点是指向头结点的,所以创建链表的时候,最后一个结点需要指向头结点。 如下图所示:

image.png

循环链表有如下特征:

  1. 尾节点可以找到头节点
  2. 头节点不能找到尾节点
  3. 如果没有有效数据节点(空链),头节点指向自身

与循环链表不同的是双向链表:双线链表有两个指针域,一个指向直接后继,另一个指向直接前驱。克服了单链表和循环链表只能顺时针向后查找其他节点的缺点。

以下是双向链表的一个结点的示意图:

image.png

用指向某结点的指针p代表该结点

结点p的后继的前驱等于结点p本身

结点p的前驱的后继等于结点p本身

以上就是线性表的所有链表形式。

链表由一连串节点组成,每个节点包含任意的实例数据(data fields)和一或两个用来指向明上一个/或下一个节点的位置的链接("links")。链表是一种自我指示数据类型,因为它包含指向另一个相同类型的数据的指针。链表允许插入和移除表上任意位置上的节点,但是不允许随机存取。链表有很多种不同的类型:单向链表,双向链表以及循环链表。

链表结构在计算机的优缺点: 链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。但是链表失去了数组随机读取的优点,同时链表由于增加了结点的指针域,空间开销比较大。

总之,链表是一种很重要的存储结构,以上内容就是关于线性表的链式存储结构的学习。