Java数据结构和算法解析(二)
线性表
线性表(List)零个或多个数据元素的有限序列
线性表的顺序存储结构
用一段地址连续的存储单元依次存储线性表的数据元素
线性表的链式存储结构
n个结点(数据元素a的存储映像)连接成一个链表,即为线性表的链式存储结构
数据元素a,存储本身信息和直接后继的存储位置
数据域: 存储数据元素信息的域
指针域: 存储直接后继位置的域
指针: 指针域中存储的信息
节点: 指针域和数据域组成数据元素a的存储映像
线性表分类
数组
用来存放同类数据元素的集合
链表
是用一组任意的存储单元存储线性表的数据元素(这组存储单元可以是连续的,也可以是不连续的)
每个数据单元有两部分组成,一个是数据域,存储数据值;另一个是指针域,指向下一个数据单元。这样的数据单元叫做结点。当多个结点通过指针指向,关联起来,就形成了一个链
单链表
链表的每个结点中只包含一个指针域
双向链表
在单链表的每个结点中,再设置一个指向其前驱结点的指针域,双向链表中的结点都有两个指针域,一个指向直接后继,另一个指向直接前驱
循环链表
将单链表中终端结点的指针端由空指针改为指向头结点,就使整个单链表形成一个环
静态链表
用数据描述的链表
队列
单端队列(Queue)
只能在一端插入数据,另一端删除数据
双端队列(Deque)
每一端都可以进行插入数据和删除数据操作
栈
限定仅在表尾进行插入和删除操作的线性表