线性表以及线性表的各种操作

1.线性表的定义

若将线性表记为(a1,...,ai-1,ai,ai+1,...,an),则表中ai-1领先于ai,ai领先于ai+1,称ai-1是ai的直接前驱元素,ai+1是ai的直接后继元素。
线性表元素的个数n(n>=0)定义为线性表的长度,当n=0时,称为空表。
注:线性表只有一个前驱和后驱,而且线性表是最常用且最简单的一种数据结构。

2.线性表的顺序存储结构

线性表的顺序存储结构,指的是一段地址连续的存储单元依次存储线性表的数据元素。

线性表的顺序存储结构如图所示:

 

2.1地址计算方法

用数组存储顺序表意味着要分配固定长度的数组空间,分配的数组空间大于等于当前线性表的长度,数据元素的序号和存放它的数组下标之间存在对应关系:

mark

存储器的每个存储单元都有自己的编号,这个编号称为地址。

每个数据元素都需要占用一定的存储单元空间的,假设占用的是c个存储单元,对于第i个数据元素ai存储位置为(LOC表示获得存储位置的函数):

LOC(ai) = LOC(a1) + (i-1)*c

(1)线性表的动态分配顺序存储结构:

#define LIST_INIT_SIZE 100 //线性表存储空间的初始分配量
#define LISTONCREMENT 10 //线性表存储空间的分配增量
typedef struct{
ElemType *elem; //存储空间基地址
int length; //当前长度
int listsize; //当前分配存储容量
}SqList;

(2)顺序表的初始化操作:

Status InitList(SqList &L)
{
L.elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if(!L.elem)
exit(OVERFLOW);
L.length=0;
L.listsize=LIST_INIT_SIZE;
return OK;
}

 

 

猜你喜欢

转载自www.cnblogs.com/gzh666666/p/10952729.html
今日推荐