链表的定义

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了链表的定义相关的知识,希望对你有一定的参考价值。

参考技术A

定义 链表 是一种物理存储单元上 非连续、非顺序 的存储结构,由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。

在链表的储存上,每个结点不仅包含所存的元素信息,还包含元素间的 逻辑信息

在每个结点除了包含的数据域外,还包含一个 指针域 ,用以指向其后继结点。

带头结点的单链表中, 头指针head 指向头结点,头结点的值域不含任何信息,从头结点的后继结点开始储存信息。头指针head 始终 不等于NULL head->next 等于NULL的时候,链表为空。

不带头结点的单链表中的 头指针head 直接指向开始结点,当head等于NULL时,链表为空。

双链表就是在单链表结点上增添了一个指针域,指向当前节点的 前驱

相比于单链表,双链表能够从 终端结点 反向走到 开始结点

只需要将单链表 最后一个 指针域( 空指针 )指向链表中的 第一个结点 即可。(如果循环单链表带头结点,则指向头结点;不带头结点,则指向开始结点)。

循环单链表可以实现从 任何一个结点 出发,访问链表中任何结点。(注意:此处应该区分与顺序表随机访问的特点。循环单链表指的是从一个结点出发,而不是知道一个结点从而迅速找到任何一个结点,因此循环单链表 不具有 随机访问特性。)

带头结点 的循环单链表,当 head 等于 head->next 时,链表为空; 不带头结点 的循环单链表,当 head 等于 NULL 时,链表为空。

双链表 终端节点的next指针 指向链表中第一个结点,将链表中的第一个结点的 prior指针 指向终端结点。

不带头结点 的循环双链表, head 等于 NULL ,链表为空

带头结点 的循环双链表是没有空指针的,其为空状态下, head->next head->prior 必然都等于 head ,故一下四种语句都可判断为空

静态链表借助 一维数组 表示。

静态链表结点空间来自于一个 结构体数组 (一般链表结点空间来自整个内存),数组中每个结点含两个分量:

注意:静态链表的指针不是通常所说储存内存地址的指针型变量,而是储存数组下标的整型变量,其功能类似于指针,故在此称为指针

顺序表储存空间时一次性分配的,链表的是多次分配的

(注: 存储密度 = 结点值域所占存储量/结点结构所占存储总量

顺序表存储密度 = 1

链表存储密度 < 1

顺序表可以 随机存取 ,也可以 顺序存取

链表只能 顺序存取

顺序表平均需要移动一半元素

链表不需要移动元素,仅需 修改指针

以上是关于链表的定义的主要内容,如果未能解决你的问题,请参考以下文章

定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。

数据结构 链表_双向链表的接口定义

数据结构 链表_单链表的接口定义

双向链表详解

Python3中定义一个单向链表

❤️数据结构入门❤️(1 - 3)- 链表