题目描述:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。

 

两个单调递增链表的合并,重点就是找到两个链表中较小的那个节点插入新链表,就可以得到一个合并后有序的新链表。

剑指offer : 合并两个排序的链表

递归的思想:比较两个链首节点的数据大小,较小的一个节点插入新链表。

递归处理(pHead1->next,pHead2)

否则:递归处理(pHead1,pHead2->next)


struct ListNode 
{
	int val;
	struct ListNode *next;
	ListNode(int x)
		:val(x), next(NULL)
	{}
};
class Solution {
public:
	ListNode * Merge(ListNode* pHead1, ListNode* pHead2)
	{
		ListNode* result = nullptr;
		if (pHead1 == nullptr)
		{
			return pHead2;
		}
		if (pHead2 == nullptr)
		{
			return pHead1;
		}
		if (pHead1->val < pHead2->val)
		{
			result = pHead1;
			result->next = Merge(pHead1->next, pHead2);
		}
		else
		{
			result = pHead2;
			result->next = Merge(pHead1, pHead2->next);
		}
		return result;
	}
};

 

相关文章: