线性表的定义
线性表:零个或多个数据元素的有限序列。
1)线性表是一个序列。即元素之间是有顺序的,若元素存在多个,则第一个元素无前驱,最后一个元素无后继,其他每个元素都有且只有一个前驱和后继。
2)线性表强调是有限的,元素个数也是有限的。事实上,在计算机中处理的对象都是有限的,那么无限的数列,只存在于数学的概念中。
注意:位序是从1开始的。
在较复杂的线性表中一个数据元素可以由若干个数据项组成。
线性表的抽象数据类型
注:
当你传递一个参数给函数的时候,这个参数是否在函数内被改动决定了使用什么参数形式。
1)如果需要被改动,则需要传递指向这个参数的指针。
2)如果不用被改动,可以会直接传递这个参数。
线性表的顺序存储结构
线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素。
线性表的每个数据元素的类型都相同,可以使用C语言的一维数组来实现顺序存储结构。
随着数据的插入,线性表的长度开始变大,不过线性表的当前长度不能超过存储容量,即数组的长度。
线性表顺序存储结构代码
#define MAXSIZE 20 /* 存储空间初始分配量 */
typedef int ElemType; /* ElemType类型根据实际情况而定,这里假设为int */
typedef struct
{
ElemType data[MAXSIZE]; /* 数组,存储数据元素 */
int length; /* 线性表当前长度 */
}SqList;
顺序存储结构需要3个属性:
1:存储空间的起始位置:数组data,它的存储位置就是存储空间的存储位置。
2:线性表的最大存储容量:数组长度MAXSIZE。
3:线性表的当前长度:length。
注1:区别数组长度和线性表长度
线性表的长度是线性表中数据元素的个数,随着线性表插入和删除操作的进行,这个量是变化的。
线性表的长度<=数组的长度。
注2:线性表的第i个元素是要存储在数组下标为i-1的位置上
存储器中的每个存储单元都有自己的编号,这个编号称为地址。