数据结构学习–线性表
大纲
- 线性表定义和特点
- 线性表的类型定义
- 线性表的顺序存储结构
- 线性表的链式存储结构
具体案例
定义和特点
定义:具有相同特性的数据元素的一个有限序列
线性表的类型定义
Java语法
public class SinglyListNode {
int val;
SinglyListNode next;
SinglyListNode(int x) { val = x; }
}
基本操作:
线性表的顺序存储结构
线性表的顺序存储结构也称为顺序映像
定义:逻辑上相邻的数据元素存储在物理上相邻的存储单元的存储结构
- 地址连续
- 依次存放
- 随机存取
- 类型相同
如果知道某一个元素存储的位置,就可以得到所有元素的存储地址
通过数组 + 长度 完成对线性表的定义
注意:逻辑位序和物理位序相差1
具体方法实现
线性表的链式存储结构
定义
用一组物理位置任意的存储单元来存放线性表的数据元素
这组存储单元位置是任意的,可以相邻,也可以不相邻(即逻辑次序和物理次序不同),访问元素是从第一个元素依次访问。顺序存取
结点:数据元素的存储映像.由数据域和指针域两部分组成
链表: n个结点由指针链组成一个链表,它是线性表的链式存储映像,称为线性表的链式存储结构
空表:
有头节点,则头结点的指针域为空
无头节点,则头指针指向空
头结点的好处:
-
便于首元结点的处理
首元结点的地址保存在头结点的指针域当中,所以在链表的第一个位置上的操作和其它位置一致,无须进行特殊处理 -
便于空表和非空表的统一处理
无论链表是否为空,头指针都是指向头结点的非空指针,因此空表和非空表的处理也就统一了
具体方法的实现
查找
根据第几个查找元素的数据
根据查找值返回地址
根据查找返回位置
插入
先找到要插入的位置的前一个元素
先赋地址给要插入的元素的直接后驱,再让其前一个元素的直接后驱指向它
删除
先找到要删除的元素的前一个元素
让其直接后驱指向其下下个元素
建立单链表–头插法
建立单链表–尾插法