数据逻辑结构之 线性表:
线性表是多个类型相同的元素组成的有限序列。
一、特性:
1.相同的数据类型,意味着在内存里,每个元素所占的存储空间是一样的。
2.是一个序列,是有顺序的,除了头尾元素,其他的元素都有前驱和后驱元素;
3.长度是有限的,可以为0,每个元素在表里都有一个唯一的序号。
二、详细分类
1.顺序表,即使用数组结构的,元素的存储内存地址是连续的,每个元素有一个索引(序号)。
优点:节省存储空间,索引查找效率高,根据索引直接找到存储地址
缺点:
插入和删除元素,需要大量移动元素,效率低;
数组必须提前分配笃定数量的空间,如果存的元素很少,会浪费空间;
按照元素内容查找,需要遍历查找,效率低。
2.链表,链表结构的,又根据单双向、是否循环分为几种。
特性:数据存储在不连续的内存空间里,每个节点存储一个元素,每个节点由数据值和数据指针组成,元素之间的逻辑关系通过节点之间的链接关系反映,逻辑相邻的元素,物理上不一定相邻。
下图是双向链表的结构:
优点:
插入、删除元素快,不需要移动元素,改指针就行了;
有元素才会分配开年,不会浪费闲置空间。
缺点:
查找元素得遍历,比较慢;
比顺序存储的存储密度小,因为存储地址是不连续的。
三、java中的线性表
vector 顺序表
ArrayList 顺序表
LinkedList 双向循环链表