线性表的合并(有序)

#define _CRT_SECURE_NO_WARNINGS 1
#include"stdio.h"
#include"windows.h"
#define maxsize 20
typedef struct {
	int a[maxsize];
	int last;
}A;

int HBlist(A *b,A*c,A*d)
{
	int blow=0, clow=0; 
	if (b->last + 1 + c->last + 1 > maxsize)
	{
		printf("线性表长度不够");
		return 1;
	}
	while (blow <= b->last && clow <= c->last)
	{
		if (b->a[blow] < c->a[clow])//b 比 c大
		{
		
			d->last++;
			d->a[d->last] = b->a[blow];//将小的返回给 d	
			blow++;
		}
		else
		{
			
			d->last++;
			d->a[d->last] = c->a[clow];
			clow++;
		}
	}
	if (blow == b->last)
	{
		
		d->last++;
		d->a[d->last] = c->a[clow];
		clow++;
	}
	if (clow == c->last)
	{
		
		d->last++;
		d->a[d->last] = b->a[blow];
		blow++;
	}
	return 0;
}
int main()
{ 
	A b = { {2,2,4,4,5,6},5 }, *b1; b1 = &b;//创建两个有序表
	A c = { {1,1,3,7,7},4 }, *c1; c1 = &c;
	A d, *d1; d1 = &d; 
	int ret; int i;
	d1->last = -1;//创建一个目标线性表
	ret=HBlist(b1, c1, d1);
	if (ret == 0)
	{
		for (i = 0; i < d1->last; i++)
		{
			printf("%d\n", d1->a[i]);
		}
	}
	system("pause");
	return 0;
}

总结 :合并时分情况 存就行了
一个线性表若是完了,就直接将剩下的合并到目标线性表

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值