数据结构第二章线性表——2.1:线性表类型定义

第二章线性表——2.1:线性表类型定义

线性表可以说是数据结构中最常用和最简单的一种数据结构了。

线性表,可以说类似于 1 2 3 4 5 6这样的排序,这里面有6个元素,所以长度是6,当元素个数为0的时候我们称其为空表。再看,因为2的前面是1,所以1就是2的直接前驱元素,1的后面是2,所以2就是1的直接后驱元素,在上述的线性表中,由于1前面没有元素,所以1没有前驱,同理6没有后驱

然后读者在掌握最基本线性表的子程序后才能进行下一步学习。

我们在解决线性表的问题的时候经常遇到把两个或两个以上的线性表合成一个表,或者把一个表拆成两个或者两个以上的表。

例2.1我们用线性表LA,LB分别表示集合A,B,然后要求我们把A改成A和B的并集,即A=A∪B。

下面算法的思想就是把所有LB中的不在LA中的元素插入LA(后序的所有算都是以伪码形式表示)

void union(list &la,list lb)
{
la_len = listlength(la);
lb_len = listlength(lb);//求出两个线性表的长度
for ( i = 1;i <= lb_len:i++)
{
getelem(lb, i, e);//取Lb中的第i个元素赋值给e
if(!locataelem(la, e, equal)) listinsert(la, ++la_len, e);//locataelem(la, e, equal)是拿e与la中的元素记性比较看la中是否有与e相等的元素,若没有直接在La末尾插入
}
}

2.1的情况是用于线性表无序排列的时候,线性表有序排列情况如下。
例2.2 LA,LB这两个线性表中的元素都是非递减有序排列,我们要把这两个线性表合成一个洗的呢非递减有序排列表LC。

void mergelist(list la, list lb, list& lc)
{
	initlist(lc);//构建新表
	i = j = 1;
	k = 0;
	la_len = listlength(la);
	lb_len = listlength(lb);//求出两个线性表的长度
	while ((i <= la_len) && (lb < +lb_len))
	{
		getelem(la, i, ai);
		getelem(lb, j, bj);
		if (ai <= bj)
		{
			listinsert(lc, ++k, ai);
			++i;
		}
		else
		{
			listinsert(lc, ++k, bj);
			++j;
		}
	}
	while (i <= la_len )
	{
		getelem(la, i++, ai);
		listinsert(lc, ++k, ai);
	}
	while (j <= lb_len)
	{
		getelem(lb, j++, bj);
		listinsert(lc, ++k, bj);
	}
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Harden先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值