线性表
1、逻辑结构
1、数据结构只有一种逻辑结构,而可以有两种存储结构,有多种抽象运算。
2、线性表是一种逻辑结构,属于总线性结构——线性结构的一种,同属于线性结构的逻辑结构还有:栈、队列和数组。
3、线性表定义:具有相同数据类型的 n n n 个数据元素的有限、有序的列表。
4、线性表的特点:
(1)表中元素有限。
(2)表中元素具有逻辑上的顺序性,表中元素有其先后次序。
(3)表中元素都是数据元素,每个元素都是单个元素。
(4)表中元素的数据类型都相同,这意味着每个元素占有相同大小的存储空间。
(5)表中元素具有抽象性,即仅讨论元素间的逻辑关系,而不考虑元素究竟表示什么内容。
(6)线性表中的第一个元素叫表头元素,最后一个元素叫表尾元素。除了表头元素,每个元素都有一个直接前驱;除了表尾元素,每个元素都有一个直接后继。
2、物理结构
2.1、顺序存储——顺序表
1、存取方式:
(1)随机存取:随机存取指的是当存储器中的数据被读取或写入时,所需要的时间与该数据所在的物理地址无关。随机存取的例子就是数组。
(2)顺序存取:顺序存取是一种按记录的逻辑顺序进行读、写操作的存取方法,所需要的时间与该数据所在的物理地址有关。顺序存取表现为:在存取第N个数据时,必须先访问前(N-1)个数据。顺序存取的例子就是链表。
(3)存取方式取决于存储结构的选择。
2、顺序表的定义:线性表的顺序存储结构叫做顺序表。它是用一组地址连续的存储单元依次存储线性表中的数据元素,从而使得逻辑上相邻的两个元素在物理位置上也相邻。
3、顺序表的特点:
(1)表中元素的逻辑顺序与其存储的物理顺序相同。
(2)能实现随机存取。
4、顺序表的通常是使用数组来实现,要注意:
(1)顺序表中位序为 n n n 的元素在数组中下标为 n − 1 n-1 n−1。
(2)用于实现的数组可以是静态数组也可以是动态数组。无论是哪种内存分配方式,都不会改变随机存取的存取方式。
5、存储结构选择顺序表的优缺点:
优点:
(1)可进行随机存取。即可通过首地址和元素序号可以在
O
(
1
)
O(1)
O(1) 的时间复杂度内找到指定的元素。
(2)存储密度高。每个结点只存储数据元素。
缺点:
(1)元素的插入和删除需要移动大量的元素,插入操作平均需要移动
n
/
2
n/2
n/2 个元素(插入到首位移动
n
n
n 个元素,插入到末位移动
0
0
0 个元素);删除操作平均需要移动
(
n
−
1
)
/
2
(n-1)/2
(n−1)/2 个元素(删除首位移动
n
−
1
n-1
n−1 个元素,删除末位移动
0
0
0 个元素)。
(2)顺序存储分配需要一段连续的存储空间,不够灵活。
2.2、顺序表上基本操作的实现
1、顺序表初始化
(1)静态数组
(2)动态数组