DS单链表--合并

该代码实现了一个功能,将两个已排序的单链表合并成一个新的递增有序单链表。首先定义了LNode类表示链表节点,然后创建LinkList类处理链表操作。LL_merge函数比较两个链表的节点值,按顺序连接它们。在主函数中,创建两个链表,读入数据,然后调用LL_merge合并并打印结果。
摘要由CSDN通过智能技术生成

题目描述

假定两个单链表是递增有序,定义并实现以下函数,完成两个单链表的合并,继续保持递增有序

int LL_merge(ListNode *La, ListNode *Lb)

输入

第1行先输入n表示有n个数据,接着输入n个数据

第2行先输入m表示有M个数据,接着输入m个数据

输出

输出合并后的单链表数据,数据之间用空格隔开

输入样例1

3 11 33 55
4 22 44 66 88

输出样例1

11 22 33 44 55 66 88 

#include <iostream>
using namespace std;

class LNode
{
public:
	int data;
	LNode* next;
	LNode()
	{
		next = nullptr;
	}
};

class LinkList
{
public:
	LNode* head;
	int len;
	LinkList()
	{
		head = new LNode;
		len = 0;
	}
	void Create()
	{
		int t;
		cin >> t;
		LNode* tail = head;
		while (t--)
		{
			int e;
			cin >> e;
			LNode* p = new LNode;
			p->data = e;
			tail->next = p;
			tail = p;
			len++;
		}
	}
};

LNode* LL_merge(LNode* la, LNode* lb)
{
	LNode* res = new LNode;
	LNode* t = res;
	LNode* p = la;
	LNode* q = lb;
	while (p && q)
	{
		if (p->data < q->data)
		{
			t->next = p;
			p = p->next;
			t = t->next;
		}
		else
		{
			t->next = q;
			q = q->next;
			t = t->next;
		}
	}
	if (p == nullptr)
	{
		t->next = q;
	}
	else
	{
		t->next = p;
	}
	return res;
}

int main()
{
	LinkList la, lb;
	la.Create();
	lb.Create();
	LNode* p = LL_merge(la.head->next, lb.head->next)->next;
	while (p != nullptr)
	{
		cout << p->data << " ";
		p = p->next;
	}
	cout << endl;

	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值