数组
数组能够顺序存储相同类型的多个数据,数据的元素在内存上的存储地址是连续的。在声明数组的时候,需要指定数组的名称,它含有的数据类型以及数组的长度。
特点:数据是连续的,随机访问速度快。
(在Java中Collection集合中提供了ArrayList和Vector实现动态数组)
表(线性表)
线性表:零个或多个数据元素的有限序列。线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的。
- 线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素。
- 线性表的链式存储结构,是由一系列结点组成,这些节点不必再内存中相连。结点包括存储元素的数据域和存储直接后继或前驱的指针域。
具体实现可以参见java集合类中的ArrayList和LinkedList。
数组实现
|
|
单链表
|
|
双链表
|
|
顺序存储结构和单链表结构的优缺点比较:
column | 顺序存储结构 | 单链表存储结构 |
---|---|---|
存储分配方式 | 连续的存储单元 | 任意的存储单元 |
时间性能 | find:O(1), insert&delete:O(n) | find:O(n), insert&delete:O(1) |
空间性能 | 需要预分配存储空间 | 不需要预分配存储空间 |