文章目录
线性表概念

线性表如排也比较常见啊,就经常咱们排的队啊,就是一个线性表,比如说你上医院去挂号,然后大家都会很自觉的排成一溜长队。那这个排的队列啊就是一个线性表。
那我在队列中如何确定自己当前的位置呢?
有人会说我可以从头开始数,看自己是第几个,这是没有问题的,但是如果说你前面的人发生变化的时候,那这个方法就不是那么可靠了。
那还有没有更简单的方法呢?
其实咱们真正在排队的时候,是不是说记住自己的前面一个人,记住后面的一个人,那不管队列怎么变,那我当前的位置都是固定的。
还有就是在清点这个队伍的时候,那最简单的方法是什么呢?
其实就是让每个人去看看自己的前面的人和后面的人是否还在。那整个队列的话就是完整的。
那这种方法依赖于什么?
依赖于咱们在排队过程中人与人之间产生的 这种一对一的关系,在数据结构中这种逻辑关系就叫做线性表
线性表的定义:
线性表就是0个或多个相同数据元素的有限序列
线性表的表示方法:
线性表记为: L=(A0 ,·······Ai-1 , Ai+1 ,····· An-1)
- 其中:
L为表名,Ai (0到n-1) 为数据元素 n为表长, - n>0 时,线性表L为非空表,否则为空表,记为
Φ - 二元组形式描述为:
L=(D,R)D数据集合,R关系集合
假设有一个顺序表L={1,2,3,4,5,6};他们的关系图:

1是2的直接前驱,3是2的直接后继
二元组描述 L=(D,R)
D = {
1,2,3,4,5,6} (n=6) //长度为6
R = {
<1,2>,<2,3>,<3,4>,<4,5>,<5,6>}
线性表的特征:
- 对非空表,A0是表头,无前驱;
- An-1是表尾,无后继;
- 其他的每个元素A1有且仅有一个直接前驱(Ai-1)和一个直接后继(Ai+1);
线性表:
A1是唯一的 “第一个” 元素, 称“表头元素” An 唯一最后一个元素,称“表尾元素”
每个元素有且仅有一个“前驱 除最后一个元素外,每个元素有且仅有一个接直后继。
线性表是一种逻辑结构,表示元素之间一对一的相邻关系
顺序表和链表是指存储结构.
线性表的基本操作
- 建立一个空表:
Create List(L); - 置空表:
ClearList(L); - 判断表空:
EmptyList(L);(若表为空,返回值为True(或1),否则返回False(或0)) - 求表长:
Length(L);(返回线性表L的长度,即L中数据元素的个数) - 取表中元素(按位查找):
GetList(L,i);要求0 <= i <= length(L)-1(获取表中第i位置元素的值) - 定位运算(按值查找):
Locate(L,x);确定元素x在表L中的位置(或序号)(如果查找存在线性表中,返回i序号,不存在返回-1) - 插入操作:
Insert(L,x,i);(在将元素x插入到表中第i个元素Ai之前,且表长+1,i=n 时,插入表尾) - 删除操作:
Delete(L,i);(删除表L中第i个元素Ai,且表长减1,要求0 <= i <= n-1)
什么时候用“传入参数”的引用“
&”:对参数修改结果需要“带回”
线性表的合并运算
设线性表La=(a0 a1,………,a),Lb=(b0 b1,……b),求La U Lb => La,如图所示。

算法思路:
依次取表Lb中的bi (i=0,1,…n-1),若bi不属于La,则将其插入表La中。
算法描述:
void Union(list La, list Lb)
{
int i, k; data_t x;
for (i=0; i<Length(Lb); i++)
{
x=GetList(Lb,i);
k=Locate(La ; x);
if(k==-1){
Insert(La,x,Length(La));
}
}
}
线性表去重运算
例:清除线性表L=(a0 a1,····, ai ,····,an-1)中重复元素的算法
算法思路:
对当前表L中的每个ai (0 ≤ i ≤ n-2),依次与aj (i+1 ≤ j ≤ n-1)比较,若与ai 相等,则删除。
算法描述:
void Purge(list L)
{
int i=O,j;
data_t x,y; // 初始:L=(1,3,1,5,3,5,7)
while(i < Length(L)-1){
x=GetList(L,i);
j=i+1;
while (j<Length(L))
{
y=GetList(L,j);
if(y == x) Delete(L,j); else j++;
}
i++
线性表是一种逻辑结构,表示元素间一对一的相邻关系,常用于排队场景。本文介绍了线性表的概念、定义、表示方法和特征,并详细讲解了顺序存储结构,包括顺序表的创建、插入和删除操作,以及在C语言中的实现。此外,还探讨了线性表的合并和去重运算。
最低0.47元/天 解锁文章

3403

被折叠的 条评论
为什么被折叠?



