有序单链表的合并

cpp 复制代码
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
typedef int ElemType;
typedef struct LinkNode {
	ElemType data;
	LinkNode* next;
}LinkNode,*LinkList;
void creatLinkList(LinkList& L, int m) {
	L = (LinkNode*)malloc(sizeof(LinkNode));
	L->next = NULL;
	int num;
	for (int i = 0; i < m; i++) {
		scanf("%d", &num);
		LinkNode* pnode = (LinkNode*)malloc(sizeof(LinkNode));
		pnode->data = num;
		pnode->next = L->next;
		L->next = pnode;
	}
}
void printLinkList(LinkList L) {
	LinkNode* pcur = L->next;
	while (pcur != NULL) {
		printf("%d ", pcur->data);
		pcur = pcur->next;
	}
}
void insert(LinkNode*& ptail, LinkNode* pnode) {
	if (ptail->data == pnode->data) {
		free(pnode);
	}
	else {
		pnode->next = ptail->next;
		ptail->next = pnode;
		ptail = pnode;
	}
}
LinkList mergeTwoList(LinkList& La, LinkList& Lb) {
	LinkNode* pcurA = La->next;
	LinkNode* pcurB = Lb->next;
	LinkList Lc = La;
	Lc->next = NULL;
	LinkNode* ptail = Lc;
	free(Lb);
	while (pcurA != NULL && pcurB != NULL) {
		if (pcurA->data < pcurB->data) {
			LinkNode* pnode = pcurA;
			pcurA = pcurA->next;
			insert(ptail, pnode);
		}
		else {
			LinkNode* pnode = pcurB;
			pcurB = pcurB->next;
			insert(ptail, pnode);
		}
	}
	if (pcurA != NULL) {
		ptail->next = pcurA;
	}
	if (pcurB != NULL) {
		ptail->next = pcurB;
	}
	return Lc;
}
int main() {
	LinkList La, Lb;
	int m, n;
	scanf("%d", &m);
	creatLinkList(La, m);
	scanf("%d", &n);
	creatLinkList(Lb, n);
	LinkList Lc=mergeTwoList(La, Lb);
	/*printLinkList(La);
	printf("\n");
	printLinkList(Lb);*/
	printLinkList(Lc);
	return 0;
}
相关推荐
superman超哥18 小时前
仓颉语言中元组的使用:深度剖析与工程实践
c语言·开发语言·c++·python·仓颉
LYFlied19 小时前
【每日算法】LeetCode 153. 寻找旋转排序数组中的最小值
数据结构·算法·leetcode·面试·职场和发展
唐装鼠19 小时前
rust自动调用Deref(deepseek)
开发语言·算法·rust
ytttr87320 小时前
MATLAB基于LDA的人脸识别算法实现(ORL数据库)
数据库·算法·matlab
charlie11451419120 小时前
现代嵌入式C++教程:C++98——从C向C++的演化(2)
c语言·开发语言·c++·学习·嵌入式·教程·现代c++
雨季余静20 小时前
c语言 gb2312转utf-8,带码表,直接使用。
c语言·c语言utf8·c语言gb2312·c语言gbk·c语言gb18030·gb2312转utf8·gbk转utf8
2401_8904430221 小时前
Linux 基础IO
linux·c语言
jianfeng_zhu21 小时前
整数数组匹配
数据结构·c++·算法
yueqingll1 天前
032、数据结构之代码时间复杂度和空间复杂度的判断:从入门到实战
数据结构
smj2302_796826521 天前
解决leetcode第3782题交替删除操作后最后剩下的整数
python·算法·leetcode