有序单链表的合并

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;
}
相关推荐
知乎的哥廷根数学学派13 分钟前
面向可信机械故障诊断的自适应置信度惩罚深度校准算法(Pytorch)
人工智能·pytorch·python·深度学习·算法·机器学习·矩阵
码不停蹄Zzz35 分钟前
C语言第1章
c语言·开发语言
666HZ6662 小时前
数据结构2.0 线性表
c语言·数据结构·算法
SmartRadio2 小时前
ESP32添加修改蓝牙名称和获取蓝牙连接状态的AT命令-完整UART BLE服务功能后的完整`main.c`代码
c语言·开发语言·c++·esp32·ble
余瑜鱼鱼鱼2 小时前
Java数据结构:从入门到精通(十二)
数据结构
实心儿儿2 小时前
Linux —— 基础开发工具5
linux·运维·算法
charlie1145141913 小时前
嵌入式的现代C++教程——constexpr与设计技巧
开发语言·c++·笔记·单片机·学习·算法·嵌入式
济6174 小时前
嵌入式C语言(第二期)
c语言
清木铎4 小时前
leetcode_day4_筑基期_《绝境求生》
算法
清木铎4 小时前
leetcode_day10_筑基期_《绝境求生》
算法