线性表的逻辑结构
线性表是包含若干数据元素的一个线性序列。记为:
其中:为表名, ;
为表长,时,线性表为非空表,否则为空表。
线性表可用二元组形式描述:
即线性表包含数据元素集合和关系集合:
其中:关系符被称为有序对,表示任意相邻的两个元素之间的一种先后次序关系,是的直接前驱, 是的直接后继。
设有一个顺序表,使用二元组描述,则
线性表的特征:
- 对非空表,是表头,无前驱;
- 是表尾,无后继;
- 其他的每个元素有且仅有一个前驱和一个后继。
顺序存储结构的表示
若线性表中的各元素依次存储于计算机一片连续的存储空间。
设为的地址,,每个元素占个单位的,则:
顺序存储结构的特点
- 逻辑上相邻的两个元素的存储位置在物理上也是相邻的;
- 对数据元素的存取为随机存取或按地址存取;
- 存储密度高,其密度为:
存储密度D=(数据结构中元素所占存储空间)/(整个数据结构所占用的空间)
顺序存储的不足
- 对表的插入和删除等运算的时间复杂度高。
- 要求系统提供一片较大的连续存储空间。
- 插入和删除等操作运算耗时,且存在元素在存储器中大片移动的现象。
线性表的基本运算
设线性表,对的基本运算有:
- 建立一个空表:;
- 置空表:;
- 判断线性表是否为空:,若为空,返回值为1,否则返回0;
- 求表长:;
- 取表中某个元素:,即,要求;
- 定位运算:,确定元素在表中的位置(或序号),如果元素在表中,则返回位置,如果不在则返回-1;
- 插入:,将元素插入到表中第个元素之前,且表长+1。插入前时插入到表尾;插入后。
- 删除:,删除中第个元素,且长度减1,要求。删除前,删除后。