线性表的链式存储结构

一、链式存储的定义

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

二、链式存储逻辑结构

  • 基于链式存储的线性表中,每个结点都包含数据域和指针域
  1. 数据域:存储数据元素本身
  2. 指针域:存储相邻结点的地址

三、专业术语的统一

  • 顺序表:基于顺序存储结构的线性表
  • 链表   :基于链式存储结构的线性表
  1. 单链表   :每个结点只包含直接后继的地址信息
  2. 循环链表:单链表中的最后一个结点的直接后继为第一个结点
  3. 双向链表:单链表中的结点包含直接前驱和直接后继的地址信息

四、链表中的基本概念

  • 头结点:链表中的辅助结点,包含指向第一个数据元素的指针
  • 数据结点:链表中代表数据元素的结点,表现形式为:(数据元素,地址)
  • 尾结点:链表中最后一个数据结点,包含的地址信息为空

五、单链表的节点定义


六、单链表的内部结构

  • 头结点在单链表中的意义是:辅助数据元素的定位,方便插入和删除,因此,头结点不存在实际的数据元素

七、在目标位置处插入数据元素

  • 从头结点开始,通过current指针定位到目标位置
  • 从堆空间申请新的Node结点
  • 执行下面操作:
node->value = e;
node->next = current->next;
currnet->next = node;

八、在目标位置出删除数据元素

扫描二维码关注公众号,回复: 47847 查看本文章
  • 从头结点开始,通过current指针定位到目标位置
  • 使用toDel指针指向要删除的结点
  • 执行下面的操作:
toDel = current->next;
current->next = toDel->next;
delete toDel;

十、总结

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


文章内容来自狄泰软件学院数据结构课程,欢迎交流!











猜你喜欢

转载自blog.csdn.net/iiiiiiwwooo/article/details/80049007
今日推荐