一、线性表的链式存储结构
1、定义
线性表的链式存储单元的特点是用一组任意的存储单元存储线性表的数据元素,我们除了要存储它的元素信息外,我们还要存储它们的后继元素的存储地址。
如上图所示,在我们的节点中分数据域和指针域,指针域中存放的便是下一个结点的地址,如上图存放的0500便是下一个结点的地址。
2、头指针or头节点
头指针
- 头指针是指链表指向的第一个节点的指针,若链表有头节点,则是指向头节点的指针
- 头指针有标志作用,一般用头指针冠以链表的名字。
- 不论链表是否为空,头指针均不为空。
头节点 - 头节点是为了操作的方便而设立的,数据域一般无意义。
- 有了头节点,对在第一元素节点前插入节点和删除节点等操作就统一了。
- 头节点不一定是链表必须要素。
二、单链表的读取
我们要获取第i个数据的算法思路,没办法一开始就知道,链表的查找比较麻烦。
- 声明一个节点p指向链表的第一个结点,初始化j从1开始;
- 当j<i时候,就遍历链表,让p的指针向后移,不断指向下一个节点,j累加。
- 若到链表末尾p为空,则说明第i个元素不存在;
- 否则查找成功,返回节点p的数据。