线性表的定义与基本使用
定义
线性表是一个序列,元素之间是有序列的,若元素存在多个,则第一个元素无前驱,最后一个元素无后继,其他每个元素都有且只有一个前驱和后继。如果一个元素有两个前驱或后继,就不算是有序排列。并且线性表是有限的,无限的数列,只存在于数学的概念中。
若将线性表记为(a1,…,ai-1,ai,ai+1,…,an),则表中ai-1是ai的前驱,ai+1是ai的后继,并且都是唯一的。线性表的元素个数n定义为线性表的长度,当n=0时,成为空表。
基本操作
1.初始化,建立一个空的线性表;
2.判断线性表是否为空;
3.将线性表清空;
4.获取线性表的第i个元素;
5.查找线性表中是否有元素e存在;
6.在线性表中的第i个位置插入元素e;
7.删除线性表中的第i个元素,并用e返回其值;
8.返回线性表的元素个数。
这些函数都是些基本函数,很好实现,只是用数组来实现线性表时,插入和删除需要大量数据的移动。我们这里设置一下函数名并实现一个简单操作:使得A=A∪B。
void unio(List *La,List *Lb)
{
int La_len,Lb_len,i;
Elemtype e; //自己定义的e的类型
La_len=ListLength(La); //求线性表的长度
Lb_len=ListLength(Lb);
for(i=1;i<=Lb_len;i++)
{
GetElem(Lb,i,e); //查找线性表的的第i个元素
if(!LocateElem(La,e)) //线性表a中不存在和e相同的元素
ListInsert(La,++La_len,e); //将元素e插入线性表a尾部
}
}
我们在这里设置的unio函数只是将上面的基本操作合起来实现
线性表的存储结构
顺序存储
c语言可以直接用一维数组实现,所以并不是很难理解,数组的长度就