一、线性表
线性表是n个数据特性相同的元素的组成有限序列,是最基本且常用的一种线性结构(线性表,栈,队列,串和数组都是线性结构),同时也是其他数据结构的基础。
对于非空的线性表或者线性结构的特点:
(1)存在唯一的一个被称作“第一个”的数据元素;
(2)存在唯一的一个被称作“最后一个”的数据元素;
(3)除第一个外,结构中的每个数据元素均只有一个前驱;
(4)除最后一个外,结构中的每个数据元素均只有一个后继;
二、线性表的两种实现方式
1.1顺序表示(顺序表)
概念:用一组地址连续的存储单元依次存储线性表的数据元素,这种存储结构的线性表称为顺序表。
特点:逻辑上相邻的数据元素,物理次序也是相邻的。
只要确定好了存储线性表的起始位置,线性表中任一数据元素都可以随机存取,所以线性表的顺序存储结构是一种随机存取的储存结构,因为高级语言中的数组类型也是有随机存取的特性,所以通常我们都使用数组来描述数据结构中的顺序储存结构,用动态分配的一维数组表示线性表。
优点
连续存储,空间利用率高 (空间性能)
随机存取结构,可直接存取任一元素,存取效率高 (时间性能)
缺点
插入和删除效率低,需要移动大量元素,重新排序
存储大小固定,不定动态分配
2.1链表
概念:用一组任意的存储单元存储线性表的数据元素(这组存储单元可以是连续的,也可以是不连续的),包括数据域和指针域,数据域存数据,指针域指示其后继的信息。
单链表,如图:
优点
空间动态分配,没有限制
插入删除只需要修改指针,效率高。
缺点
空间利用率低(存放指针,不连续存放,开辟空间时存在浪费)
查找效率低(需要根据结点一个一个查找)