常用的数据结构之链表

  数据结构是一种特殊的组织和存储数据的方式,使我们可以更高效的对存储的数据执行操作。以下介绍常用的数据结构中的链表结构。

  链表是一种顺序结构,由相互链接的线性顺序项目序列组成,只能顺序访问,不能随机访问。

  •  单链表中的概念
    • 链表中的元素成为结点
    • 每个结点包含两个域:数据域和指针域。
    • 链表的头结点(head):仅存放地址,可以不存放数据,起标识单链表的作用。
    • 链表的尾结点的指针为空。
  • 链表的类型
    • 单链表:只能单向遍历结点。
      • 使用单链表示线性表时,数据元素之间的逻辑关系是由结点中的指针指示的,逻辑上相邻的两个数据元素其存储的物理位置不要求相邻。
      • 可由头指针唯一确定。  
    • 双链表:可以正向和反向遍历结点。结点中有两个指针域,一个指向后继结点,一个指向前驱结点。
    • 循环链表:尾结点的指针指向头结点,整个链表形成一个环。
  • 单链表的操作
    • 搜索:通过线性搜索在给定链表中找出key为k的第一个元素,并返回该元素的指针
    • 创建链表:
      • 前插法:将新结点逐个插入头结点之后。①创建一个只有头结点的空链表;②每读入一个数据元素则申请一个新结点;③将新节点插入到头结点之后。
      • 后插法:将新节点逐个插入到联表尾结点之后。①创建一个只有头结点的空链表L;②增加一个尾指针r指向尾结点(初始时指向头节点);③每读入一个数据元素则申请一个新结点;④将新结点插入到尾结点r之后;⑤将r指向新的尾结点。  
    • 插入:把链表先一分为二,再用新结点把它们连接起来。

      已知头指针head、插入位置前的结点指针pGuard,使用先连后断的方式,把新结点和后结点连接,再把插入未知之前的结点与后结点断开并与新结点连接。如图:   

    • 删除:采用先连后断的方式,先把待删除结点的前驱结点和它后继结点连接,再把待删除的结点与它的后继结点断开,并释放待删除结点的空间。如下图:
  • 链表的应用
    • 用于编译器设计中的符号表管理。
    • 用于Alt Tab(使用循环链表实现)的程序之间进行切换。         

  以上总结,参考:https://mp.weixin.qq.com/s/rycQvasVNGcozyDiropSow、https://www.jianshu.com/p/2db20e1115a8。

原文地址:https://www.cnblogs.com/smallzhen/p/14148941.html