单链表-合并两个有序集合

最后合并的C也要有序,并且不能破坏A,B

cpp 复制代码
#include<iostream>
#include<cstring>
using namespace std;


typedef struct LNode {
	int data;
	struct LNode* next;
}LinkNode;
void Create(LinkNode*& L, int a[], int l)
{
	L = (LinkNode*)malloc(sizeof(LinkNode));
	LinkNode* q = L;
	for (int i = 0; i < l; i++) {
		LinkNode* p = (LinkNode*)malloc(sizeof(LinkNode));
		p->data = a[i];
		q->next = p;
		q = p;
	}
	q->next = NULL;
}
void Union2(LinkNode* A, LinkNode* B, LinkNode*& C) {
	LinkNode* pa, * pb, * pc,*p;
	C= (LinkNode*)malloc(sizeof(LinkNode));
	pc = C;
	pa = A->next;
	pb = B->next;//因为建表都是有建头结点的
	while (pa != NULL && pb != NULL) {
		p = (LinkNode*)malloc(sizeof(LinkNode));
		if (pa->data > pb->data) {
			p->data = pb->data;
			pb = pb->next;
		}
		else if(pa->data< pb->data){
			
			p->data = pa->data;
			pa = pa->next;
		}
		else {
			p->data = pa->data;
			pa = pa->next;
			pb = pb->next;
		}
		pc->next = p;
		pc = p;
	}
	while (pa != NULL) {
		p= (LinkNode*)malloc(sizeof(LinkNode));
		p->data = pa->data;
		pc->next = p;
		pc = p;
		pa = pa->next;
	}
	while (pb != NULL) {
		 p = (LinkNode*)malloc(sizeof(LinkNode));
		p->data = pb->data;
		pc->next = p;
		pc = p;
		pb = pb->next;
	}
	pc -> next = NULL;
}
void display(LinkNode* L) {

	LinkNode* p = L->next;
	while (p != NULL) {
		cout << p->data << " ";
		p = p->next;
	}
}
int main() {
	int a1[] = { 1,2,3,4,5 }, b1[] = { 4,5,6 };
	LinkNode* A, * B, * C;
	Create(A, a1, 4);
	display(A);
	cout << endl;
	Create(B, b1, 3);
	display(B);
	cout << endl;
	Union2(A, B, C);
	display(C);
	return 0;
}

细节在上一篇博客里;有序合并的思路就就是,同时循环两个表比较,最后在判断哪个表没空就把剩余的加进去

相关推荐
青少儿编程课堂5 小时前
蓝桥杯青少组图形化 STEMA 省考(报名倒计时·11/22开考)+ 全国青少年信息素养大赛 2026—2027赛季 + 电子学会图形化考级:校园华容道大闯关
c++·python·算法·bfs·信息学竞赛
在猴站学算法6 小时前
(《统计学习方法》(第2版) 李航)第2章 感知机算法
学习·算法·机器学习·统计学习
Rainmicro6 小时前
【无标题】
java·数据库·算法
NEFU_Jyj16 小时前
牛客周赛R168
算法
Navigator_Z1 天前
LeetCode //C - 1317. Convert Integer to the Sum of Two No-Zero Integers
c语言·算法·leetcode
D e re k ZH1 天前
C++ 标准库算法全景指南
数据结构·c++·算法
冻柠檬飞冰走茶1 天前
字母移动游戏题解:贪心求最长可保留连续子串(附 C 实现)
c语言·开发语言·数据结构·算法·动态规划
雪落漂泊1 天前
C++算法 二分查找篇(上)
开发语言·c++·算法