代码改变世界

单链表的基本概念

2016-03-25 21:14  Keiven_LY  阅读(814)  评论(0编辑  收藏  举报

单链表的结构

为了表示每个数据元素ai与其直接后继数据元素ai+1之间的逻辑关系,对数据元素ai来说,除了存储其本身的信息之外,还需存储一个指示其直接后继的信息(即直接后继的存储位置)。

  • 数据域:我们把存储数据元素信息的域称为数据域。
  • 指针域:存储直接后继位置的域称为指针域。
  • 指针/链:指针域中存储的信息称做指针或链。
  • 结点(Node):数据域与指针域这两部分信息组成数据元素ai的存储映像,称为结点(Node)。

头结点、头指针、首元结点的理解

链表中第一个结点的存储位置叫做头指针。如果链表有头结点,那么头指针就是指向头结点数据域的指针。整个链表的存取就必须是从头指针开始进行了。之后的每一个结点,其实就是上一个的后继指针指向的位置。(图示如下)

  • 头结点是为了操作的统一与方便而设立的,放在第一个元素结点之前,其数据域一般无意义(当然有些情况下也可存放链表的长度、用做监视哨等等)。
  • 有了头结点后,对在第一个元素结点前插入结点和删除第一个结点,其操作与对其它结点的操作统一了。
  • 首元结点也就是第一个元素的结点,它是头结点后边的第一个结点。
  • 头结点不是链表所必需的。
  • 在线性表的链式存储结构中,头指针是指链表指向第一个结点的指针,若链表有头结点,则头指针就是指向链表头结点的指针。
  • 头指针具有标识作用,故常用头指针冠以链表的名字。
  • 无论链表是否为空,头指针均不为空。头指针是链表的必要元素。

注意:单链表可以没有头结点,没有头结点的单链表就变成以下形式