一、线性表的定义
基本概念
线性表:零个或者多个数据元素的有限序列。线性表能快速查找元素。
如上图所示,我们称ai-1为ai的直接前驱元素,ai+1为ai的直接后继元素,ai只有唯一的前驱和后继,注意,当线性表的元素个数为0的时候我们成称为空表。
二、线性表的抽象数据类型
线性表的抽象数据类型我们可以定义出一些线性表的基本方法来实现线性表。如我们可以定义is empty方法,定义add方法来添加数据等等,不同的应用,线性表的操作是不同的。而我们也完成了对线性表的增删操作。
三、线性表的顺序存储结构
线性表的顺序存储结构,指的是用一段自制连续的存储单元依次存储线性表的数据元素。存储示意图如下:
1、顺序存储结构有以下三个属性:
- 起始位置,数组data,它的存储位置就是存储空间的位置。
- 最大存储容量size。
- 线性表的当前长度:length。
这里我们要注意数组的长度是存放线性表的存储空间的长度,线性表的长度是线性表中元素的个数,随着线性表的插入和删除操作的进行,线性表的长度是变化的。
2、地址计算方法
线性表的元素自然也是从一开始数的,那么线性表中的第一个元素则就会存放在数组中角标为0的位置,用数组存储顺序表意味着要分配固定的长度来存放,分配的数组空间必须要大于等于当前线性表的长度。
四、顺序存储结构的插入与删除
1、获得元素
我们要获得元素,比如我们要获得线性表中第三个元素返回,我们就要在数组中找到下表为2的位置来返回所要的数据。
2、插入操作
插入的时候,因为你要插入了元素以后,插入那个元素后面的所有元素角标都要改变,所以我们要对线性表插入操作的时候得先让元素全部后移,然后再添加到指定位置。主要思路如下:
- 如果插入位置不合理,抛出异常
- 如果线性表的长度大于等于数组的长度,要么扩容,要么抛出异常。
- 从最后一个元素开始向前遍历到需要插入的 i 的位置,然后分别将它们各自向后移动一个位置。
- 将元素插入到位置 i 处。
- 表长+1。
3、删除操作
删除操作也是一样,需要先获取要删除的元素然后再进行移动元素。
主要思路如下:
- 如果删除位置不合理,抛出异常;
- 去除删除元素;
- 从删除元素位置开始遍历到最后一个元素,然后让他们分别都向前移动一个位置。
- 线性表长度-1.