一、概述
线性表是具有线性结构特点、最简单且最常用的一种数据结构。线性表( Linear List) 是具有相同特性的数据元素组成的一个有限序列。其元素可以是整数、字符等简单数据,也可以是由多个数据项组成的复合形式,甚至可以是一页书或其他更复杂的信息。 例如,由26个大写英文字母组成的字母表(A,B,C,…,x,Y,Z)就是一个线性表,表中的每个数据元素均是一个大写字母。再如,某高校1990年以来拥有的副教授以上职称的教师个数(48,64,77,93,112,136,167,…,235)也是一个线性表,表中的每个数据元素均是一个正整数。这两个线性表都是包含简单数据元素的例子。线性表中的数据元素可以是多种形式的,但是,对于同一个线性表,其数据元素必须具有同一种形式,也就是说,同一线性表中的数据元素必须同属一个数据对象集合,表中相邻的数据元素之间存在某种序偶关系。
线性结构特点: 在数据元素的非空有限集合中,存在唯一的一个称为“第一个”的数据元素(头结点);存在唯一的一个“最后一个”的数据元素(末结点)除第一个外,集合中的每个数据元素都只有一个直接前驱;除最后一个外,集合中的每个数据元素都只有一个直接后继。
二、顺序表
顺序表 是指用一组地址连续的存储单元依次存储线性表中的数据元素的线性表 。因为这种方式与高级程序设计语言中一维数组的表示和实现相一致,所以也称为数组表示法。采用顺序表表示的线性表,表中逻辑位置相邻的数据元素将存放到存储器中物理地址相邻的存储单元之中,表中元素的逻辑关系与存储顺序(物理关系)相符,换言之,顺序表中数据元素的逻辑关系是以其在存储结构中的物理(位置)关系来表示的。 因此,在顺序表中,可以根据顺序表中数据元素的位序,随机访问表中的任一元素,即顺序表是一种随机存取的存储结构。
2.1、 顺序表的插入
顺序表的插入是指在顺序表的第i-1个元素和第i个元素之间插入一个新的元素,此时顺序表中插入位置前后元素之间的逻辑关系发生变化,因此除非插入位置是当前表中的最后一个元素之后,否则必须通过顺序移动数据元素的存储位置才能实现。插入过程示意图如图所示:
顺序表的插入算法时间耗费主要是元素的移动,移动元素的个数取决于插入位置。 最好情况,插入位置在顺序表表尾,无须移动元素;最坏情况是在第一个位置插入,需要