2.2.7 将两个有序顺序表合并为一个新的有序顺序表,并由函数返回合并后的顺序表

将两个有序顺序表合并为一个新的有序顺序表,并由函数返回合并后的顺序表

思路1:遍历两个顺序表L0,L1,把L1中的元素依次插入到L0中。(插入每次都要把后面的元素后移,时间复杂度高)
思路2:同时遍历两个元素并比较,依次存放到第三个顺序表L2中。这里要注意的是:最后有表会有剩余元素,要将所有的剩余元素想办法全部加到新表最后。

思路2代码

//将两个有序顺序表合并为一个新的有序顺序表,并由函数返回合并后的顺序表
#include<stdio.h>
#include<stdlib.h>
#define Maxsize 5
typedef struct {
	int* data;
	int length;
}SqList;
// ---------------------------- 初始化-----------------------------
bool InitList0(SqList& L) {
	L.data = (int*)malloc(sizeof(int) * (Maxsize));
	L.length = Maxsize;
	for (int i = 0; i < L.length; i++) {
		L.data[i] = i + 1;
	}
	return true;
}
bool InitList1(SqList& L) {
	L.data = (int*)malloc(sizeof(int) * (Maxsize));
	L.length = Maxsize;
	for (int i = 0; i < L.length; i++) {
		L.data[i] = i * i;
	}
	return true;
}
bool InitList2(SqList& L) {
	L.data = (int*)malloc(sizeof(int) * (Maxsize));
	L.length = Maxsize * 2;
	/* for (int i = 0; i < L.length; i++) {
		 L.data[i] = i * i;
	 }*/
	return true;
}
void Merge(SqList& L0, SqList& L1, SqList& L2) {
	int i = 0, j = 0;
	for (int k = 0; k < L2.length; k++) {
		if(i < L0.length && j < L1.length) {
			if (L0.data[i] < L1.data[j]) {
				L2.data[k] = L0.data[i];
				i++;
			}
			else if (L0.data[i] >= L1.data[j]) {
				L2.data[k] = L1.data[j];
				j++;
			}
		}
		else if(i == L0.length) {
			L2.data[k] = L1.data[j++];
		}
		else if(j == L1.length) {
			L2.data[k] = L0.data[i++];
		}
	}
}
void print(SqList& L) {
	int j = L.length;
	int i = 0;
	for (i = 0; i < j; i++) {
		printf("%d ", L.data[i]);
	}
	printf("\n");
}
int main() {
	SqList L0, L1, L2;
	InitList0(L0);
	InitList1(L1);
	InitList2(L2);
	printf("第一个有序顺序表:");
	print(L0);
	printf("\n");

	printf("第二个有序顺序表:");
	print(L1);
	printf("\n");

	Merge(L0, L1, L2);
	printf("合并为:");
	print(L2);
}

虽然答案是对的
在这里插入图片描述
但是一直会运行报错说“无可用源”,试了很多方法也没办法。
在这里插入图片描述

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在EasyExcel处理动态表头日期,可以通过自定义转换器来解决。根据引用的报错信息,当EasyExcel遇到Timestamp类型的数据时,它不知道如何处理。因此,我们可以自定义一个转换器来转换Timestamp类型的数据。 首创建一个实现Converter接口的自定义转换器类。在该类实现convertToExcelData()和convertToJavaData()方法,分别用于转换数据到Excel单元格和从Excel单元格转换回Java对象。 其次,通过ConverterFactory注册自定义转换器。在注册过程,将自定义转换器与对应的日期格式进行关联。 最后,在导出Excel时,使用setConverter()方法将自定义转换器应用到日期字段上。 参考的文章提供了关于自定义转换器和注册的具体步骤和示例代码,你可以参考这些文章来实现动态表头日期的处理。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [springboot-动态表头easyExcel导入导出,2.2.7版本。自定义converter处理日期类型。+其他记录(Date日期...](https://blog.csdn.net/qq_37337660/article/details/114680512)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值