【数据结构】21_线性表的链式存储结构

顺序存储结构线性表的最大问题

插入和删除须要移动大量的元素!node


链式存储的定义

  • 为了表示每一个元素与其直接后继元素之间的逻辑关系;数据元素除了存储自己的信息外,还要存储其直接后继的信息。

image.png

ai 和 ai+1 是线性表中的两个相邻数据元素;在物理内存中无相邻关系。spa

联系存储逻辑结构

  • 基于链式存储结构的线性表中,每一个节点都包含数据域指针域3d

    • 数据域:存储数据元素自己
    • 指针域:存储相邻节点的地址

image.png

专业术语的统一

  • 顺序表指针

    • 基于顺序存储结构的线性表
  • 链表code

    • 基于链式存储结构的线性表blog

      • 单链表:每一个节点只包含直接后继的地址信息
      • 循环链表:单链表中的最后一个节点的直接后继为第一个节点
      • 双线链表:单链表中的节点包含直接前驱和后继的地址信息

不一样类型的链表

单链表

单链表.png

循环链表

循环链表.png

双线链表

双向链表.png

链表头中的基本概念

  • 头节点内存

    • 链表中的辅助节点,包含指向第一个数据元素的指针
  • 数据节点it

    • 链表中表明数据元素的节点,表现形式为:[数据元素 | 地址]
  • 尾节点class

    • 链表中的最后一个数据节点,包含的地址信息为空

单链表中的节点定义

image.png

单链表的内部结构

image.png

头节点在单链表的意义:

辅助数据元素的定位,方便插入和删除操做;所以,头节点不存储实际的数据元素软件

在目标位置插入数据元素

  1. 从头节点开始,经过 current 指针定位到目标位置
  2. 从堆空间申请新的 Node 节点
  3. 执行操做:
node->value   = e;
node->next    = current->next;
current->next = node;

插入1.png

插入2.png

在目标位置删除数据元素

  1. 从头节点开始,经过 current 指针定位到目标位置
  2. 使用 toDel 指针指向须要删除的节点
  3. 执行操做:
toDel = current->next;
current->next = toDel->next;
delete toDel;

删除.png

小结

  • 链表中的数据元素在物理内存中无相邻关系
  • 链表中的节点都包含数据域和指针域
  • 头节点用于辅助数据元素的定位,方便插入和删除操做
  • 插入和删除操做须要保证链表的完成性

以上内容整理于狄泰软件学院系列课程,请你们保护原创!

相关文章
相关标签/搜索