408数据结构每日一题-----线性表(6)

题目
将两个有序顺序表合并为一个新的有序顺序表,并由函数返回结果顺序表。

代码如下:

#include <iostream>
using namespace std;
#define Elemtype int 
#define maxsize 50

typedef struct Sqlist
{
	Elemtype data[maxsize];
	int length;
 }Sqlist;
 
  Sqlist In(Sqlist L)
 {
 	L.length=0;
 	cout<<"请输入L数据个数"<<endl;
	int n;
	cin>>n;
	cout<<"请输入L数据"<<endl; 
	int num;
	for(int i=0;i<n;i++)
	{
		cin>>num;
		L.data[i]=num;
		L.length++;
	 } 
	 return L;
 }
 
void Out(Sqlist L)
 {
 	cout<<"数据输出"<<endl;
	 for(int i=0;i<L.length;i++) 
	 {
	 	cout<<L.data[i]<<"   ";
	 }
	 cout<<endl;
 }
 
Sqlist combine(Sqlist L1,Sqlist L2)
 {
	int i,j;
	j=0;
	i=0;
	while(i<L1.length)
	{
		if(L1.data[i]<L2.data[j])
			{
				i++;
				cout<<"i="<<i<<"j="<<j<<endl;
				cout<<L1.data[i]<<"   "<<L2.data[j]<<endl;	
			}
		else
		{		
		if(L1.data[i]>L2.data[j])
			{
				int temp1;
				temp1=L1.data[i];
				L1.data[i]=L2.data[j];
				L2.data[j]=temp1;
				while(L2.data[j]>L2.data[j+1]&&j<L2.length-1)
				{
					int temp2;
					temp2=L2.data[j];
					L2.data[j]=L2.data[j+1];
					L2.data[j+1]=temp2;
					j++;
				}
				i++;
				j=0;
			}	
		}
	}
	for(int k=0;k<L2.length;k++)
	{
		L1.data[L1.length++]=L2.data[k];
	}
	return L1;
 }

 int main()
 {
 	struct Sqlist L1;
 	struct Sqlist L2;
 	L1=In(L1);
 	L2=In(L2); 
	L1=combine(L1,L2);
	Out(L1);
	return 0;
}

总结:
1. 不得不说今天的代码写的很爽,在合并两个有序顺序表的基础
上空间复杂度降到了O(1),也就是在原L1顺序表上进行操作,
本菜鸡满满的成就感啊!
2. 可以看到这次的代码整体进行了封装,基本进行了模块化,省
了不少事,以后直接就可以Ctrl+c/v了,虽然前面几篇也好多是
cv的。
开心! 晚安!

明天见!!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值