定义
线性表:零个或多个数据元素的有限序列。 如果用数学语言来进行定义。可如下:若将线性表记为(a1,a2,......,ai-1,ai,ai+1,......,an),则表中ai-1领先于ai,ai领先于ai+1,称ai-1是ai的直接前驱元素,ai+1是ai的直接后继元素。当i-1,2,......,n-1时,ai有且仅有一个直接后继,当i=2,3,4,......,n时,ai有且仅有一个直接前驱。如图所示
所以线性表元素的个数n(n>=0)定义为线性表的长度,当n=0时,称为空表。
在较复杂的线性表中,一个数据元素可以由若干个数据项组成。
线性表的抽象数据类型
线性表的顺序存储结构
顺序存储定义
线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存贮线性表的数据元素。
顺序存储方式
可以用C语言的一维数组来实现顺序存储结构。
数据长度与线性表长度的区别
1、数据的长度是存放线性表的存储空间的长度,存储分配后这个量一般是不变的。
2、线性表的长度是线性表中数据元素的个数。
3、在任意时刻,线性表的长度应该小于等于数组的长度。
地址计算方法
C语言中的数组是从0开始第一个下标的,于是线性表的第i个元素是要存储在数组下表为i-1的位置,即数据元素的序号和存放它的数组下标之间存在对应关系如图所示。
用数组存储顺序表意味着要分配固定长度的数组空间,由于线性表中可以进行插入和删除操作,因此分配的数组空间要你大于等于当前线性表的长度。
存储器中的每个存储单元都有自己的编号,这个编号称为地址。
顺序存储结构的插入与删除
获得元素操作
插入操作
删除操作
线性表顺序存储结构的优缺点
优点
1、无须为表示表中元素之间的逻辑关系而增加额外的存储空间。 2、可以快速地存取表中任一位置的元素。
缺点
1、插入和删除操作需要移动大量的元素。 2、当线性表长度变化比较大时,难以确定存储空间的容量。 3、造成存储空间的“碎片”。