有序单链表的合并

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;
}
相关推荐
YuTaoShao15 分钟前
【LeetCode 热题 100】141. 环形链表——快慢指针
java·算法·leetcode·链表
JeffersonZU24 分钟前
Linux/Unix 套接字Socket编程(socket基本概念,流程,流式/数据报socket,Unix domain socket示例)
linux·c语言·tcp/ip·udp·unix·gnu
小小小新人121231 小时前
C语言 ATM (4)
c语言·开发语言·算法
你的冰西瓜2 小时前
C++排序算法全解析(加强版)
c++·算法·排序算法
এ᭄画画的北北2 小时前
力扣-31.下一个排列
算法·leetcode
绝无仅有3 小时前
企微审批对接错误与解决方案
后端·算法·架构
无限远的弧光灯3 小时前
c语言学习_函数递归
c语言·开发语言·学习
用户5040827858394 小时前
1. RAG 权威指南:从本地实现到生产级优化的全面实践
算法
小林C语言4 小时前
C语言 | 指针小结
c语言