在了解头指针和头结点之前,先介绍数据域、指针域、结点和链表的定义:
数据域用来存储元素的数值数据
指针域存储直接后继节点的存储位置
结点是数据元素的存储映像。由数据域和指针域两部分组成
链表 n个结点由指针链组成一个链表。它是线性表的链式存储映像,称为链式表的线性存储结构
链式存储结构如下:
头指针 始终指向链表中第一个结点的指针,通常用其来标识一个链表。
头结点是链表中的首元结点之前,头指针之后的一个结点。是一个链表中的第一个结点,其数据域内用于存放空表标志和表长信息等。
首元结点是指链表中除头结点外的第一个结点,也是第一个存储数据元素的结点。
注:链表可以没有头结点,但一定有头指针
表示空表
有头结点:无论表是否为空,头指针均指向头结点,也就是*LNode
无头结点:当表非空时,头指针指向头结点,也就是*LNode;当表空时,指向NULL
交线性表的优缺点
优点:元素的个数可以自由扩充;进行插入、删除等操作时不必移动数据,只需要修改对应指针即可,效率高。
缺点:存储密度小(一个结点/存储空间除了放数据,还要放一个指针);存取(或者说取)效率不高,只能按链表的顺序进行访问,即他只能顺序存取。