一.线性表的定义
线性表(List)是由同一类型的数据元素构成的有序序列的线性结构。线性表中元素的个数称为线性表的长度;当一个线性表中没有元素时,称之为空表,表的起始位置称为表头,表的结束位置称为表尾。
线性表的操作集:
List MakeEmpty():初始化一个新的空线性表。
ElementType FindKth(int K,List L):根据指定的位序K,返回L中相应的元素a_k。
int Find(ElementType X, List L):已知X,返回线性表L中与X相同的第一个元素的相应位序i;若不存在则返回空。
void Insert(ElementType X, int i, List L):在L的指定位序i前插入一个新元素X
void Delete(int i, List L):从L中删除指定位序i的元素
int Length(List L):返回线性表L 的长度。
二.线性表的顺序存储实现
定义:线性表的顺序存储是指在内存中用地址连续的一块存储空间顺序存放线性表的各元素。由于一维数组在内存中占用的存储空间就是一组连续的存储区域,所以用一维数组来表示顺序存储的数据区域再合适不过。
线性表的存储结构如下:
typedef struct{
ElementType Data[MaxSize];
int Last;
}List;
三. 顺序存储线性表的操作实现
- 初始化
即构造一个空表。首先动态分配表结构所需要的存储空间,然后将表中的Last设置为-1,代码如下:
List* MakeEmpty()
{
List *PtrL;
PtrL = (List*)malloc(sizeof(List));
PtrL -> Last = -1;
return PtrL;
}
2 查找
在顺序存储的线性表中,查找主要是指在线性表中查找和给定数值X相同的数据元素,然后返回该元素在列表中的位置。
int Find(ElementType X,List *PtrL)
{
int i = 0;
while(i <= PtrL -> Last && PtrL -> Data[i] != X )
i++;
if(i > PtrL->Last)
return -