线性表基本概念
线性表是零个或多个具有相同数据类型的数据元素的有序序列。
线性表的存储结构
1.顺序存储结构
存储方式:顺序储存结构用一段连续的存储单元一次存储线性表的的数据元素(通常由数组实现)
适用情况:当线性表频繁查找,很少进行插入和删除操作的情况
优缺点:
优点: 无须为表示元素之间的逻辑关系而增加额外的存储空间
可以快速地存取表中任一位置的元素
缺点: 插入和删除元素操作需要移动大量元素
当线性表长度变化较大时,难以确定存储空间的容量
顺序存储结构需要预分配存储空间,分大了易造成浪费,分小了,易发生向上溢出
造成存储的碎片化
2.链式存储结构
存储方式:单链表采用链式存储结构,用一组任意的存储单元存放线性表元素。
适用情况:当线性表频繁插入和删除的情况,
还有是线性表元素个数变化较大或根本不知道有多大的情况,这样无需考虑存储空间问题。
优缺点:
优点: 单链表在找出某位置的指针后,插入和删除时间仅为O(1)
单链表不需要分配存储空间,只要有就可以分配,元素个数不受限制。
缺点: 查找时需要遍历链表,平均移动表长的一般元素,时间为O(n),效率低。
区分头指针和头结点。
链式存储结构顺序表不同类型:
- 单链表
- 静态链表 —— 用数组描述的链表,不使用指针
- 循环链表 —— 将单链表中最后一个结点的指针域由空指针改为指向头结点,形成一个环路,头尾相接的单链表。
- 双向链表 —— 在单链表的每个结点再增加一个指向其前驱结点的指针域(在插入、删除时的修改两个指针变量)