链式表示中各节点由两个域组成:
数据域:存储元素值数据
指针域:存储直接后继节点的存储位置
头指针、头节点、首元节点:示意图
头指针:是指向链表中第一个节点的指针
首元节点:是链表中存储第一个数据元素a1的节点
头结点:是在链表的首元节点之前附设的一个节点;
头结点的好处?
1 便于首元节点的处理
首先节点的地址保存在头结点的指针域,所以在链表的第一个位置上的操作和其他位置一致,无须进行特殊处理。
2 便于空表和非空表的统一处理
无论链表是否为空,头指针都是指向头结点的非空指针,因此空表和非空表的处理可以统一。
头结点的数据域可以为空,也可以存放线性表长度等附加信息,但不计入链表的长度,头节点不是元素。
如何表示空表?
- 无头结点时,头指针为空时表示空表
- 有头结点时,当头结点的指针域为空时表示为空表。
示意图:
链表(链式存储)的特点:
- 结点在存储器中的位置是任意的,即逻辑上相邻的数据元素在物理上不一定相邻。
- 访问时只能通过头指针进入链表,并通过每个结点的指针域依次向后顺序扫描其余结点,所以寻找第一个结点和最后一个结点所花费的时间不等。
顺序表---->顺序存储---->随机存取
链表---->随机存储---->顺序存取
这里要特别注意存储和存取的概念。