线性表概念:
- n个数据类型相同元素的有限序列。
特点
-
1.相同的数据类型:
原因:相同的数据类型在内存中占用相同的内存空间,以便于后续的查询定位。
-
2.序列(顺序性)
在线性表中相邻的元素之间存在着顺序关系
唯一没有直接前继的元素为a[0] ,称为表头
唯一没有直接后继的元素为a[n-1],称为表尾
a[i]是 a[i+1]的直接前继
a[i+1] 是a[i]的直接后继
-
3.有限
线性表中的数据元素的个数n 定义为线性表的长度,n是一个有限的值。
n = 0; 线性表为空表
顺序表
-
特点:在内存中分配连续的空间,只存储数据,不需要存储地址信息,位置隐含了地址信息
-
优点:
1.节省内存空间,因为分配的内存单元用来存放数据,节点之间的数据没有占用额外的空间。
2.索引查找效率高,每个节点对应一个序号,由序号可以直接计算出节点的内存地址(首地址+序号*数据类型占用空间)
-
缺点:
1.插入和删除操作需要移动元素,效率低(插入和删除时间复杂度都是O(n))
2.必须提前分配固定数量的空间,如果元素少,可能导致空间的浪费
3.按照内容查找效率低,因为要逐个比较判断。
链表-链式存储结构
- 特点:数据元素的存储对应的是不连续的存储空间,每个存储节点对应一个需要存储的数据元素。
每个节点都是由数据和指针组成,每个数据的关系都是通过存储节点之间的关系反映出来,逻辑上相邻的节点物理结构上可以不相邻。
-
缺点:
1.比顺序存储结构的存储密度小(包含指针域)
2.查找节点时链式结构要比顺序结构慢(节点不连续)
-
优点:
1.插入删除灵活(不必移动节点,只要改变节点中的指针)
2.有元素才会分配节点空间,不会由闲置的节点。