线性表的链表存储又称之为单链表,通过任意存储单元来存储线性表中的数据元素,且元素存放的位置随机,每个链表的节点,除了要存放数据元素以外,还要存放指针信息。
利用单链表可以解决顺序表需要大量连续内存的存储单元的缺点,但是单链表存在指针域,所以也会额外占用存储空间,因为单链表随机存储在内存中的原因,所以我们不能直接找到链表中的特定的节点,也就是失去了随机存储的特点,每次要查找某个元素时,都要从表头开始逐个查找。
我们常用头指针来标识一个链表,头指针为空时表示这是一个空表,且为了操作方便,我们通常会在单链表第一个节点之前添加一个头节点,头节点不带任何信息,指向链表的第一个元素
头指针与头节点:不管带不带头节点,头指针始终指向链表的第一个节点,而头节点是 带头节点的链表 中的第一个节点,通常不存储信息
引入头节点有两个优点:
- 由于第一个元素的位置存储在头节点的指针域中,所以链表第一个位置上的操作与其他位置的操作一致,所以无需进行特殊处理
- 无论链表是否为空,头指针都会指向头节点(空表中头节点的指针与为空),因此空表和非空表的处理也就得到了统一。
下面的代码描述的是带头节点的单链表
#include<iostream>
using namespace std;