题解 | #合并两个排序的链表#

合并两个排序的链表

http://www.nowcoder.com/practice/d8b6b4358f774294a89de2a6ac4d9337

归并

ListNode* Merge(ListNode* pHead1, ListNode* pHead2)
{
	ListNode *pNewHead = nullptr;
	ListNode *pCurrent = nullptr;

	while (pHead1 && pHead2)
	{
		if (pHead1->val > pHead2->val)
		{
			if (pNewHead)
			{
				pCurrent->next = pHead1;
				pHead1 = pHead1->next;
				pCurrent = pCurrent->next;
				pCurrent->next = nullptr;
			}
			else
			{
				pNewHead = pHead1;
				pHead1 = pHead1->next;
				pNewHead->next = nullptr;
				pCurrent = pNewHead;
			}
		}
		else
		{
			if (pNewHead)
			{
				pCurrent->next = pHead2;
				pHead2 = pHead2->next;
				pCurrent = pCurrent->next;
				pCurrent->next = nullptr;
			}
			else
			{
				pNewHead = pHead2;
				pHead2 = pHead2->next;
				pNewHead->next = nullptr;
				pCurrent = pNewHead;
			}
		}
	}

	while (pHead1)
	{
		if (pNewHead)
		{
			pCurrent->next = pHead1;
			pHead1 = pHead1->next;
			pCurrent = pCurrent->next;
			pCurrent->next = nullptr;
		}
		else
		{
			pNewHead = pHead1;
			pHead1 = pHead1->next;
			pNewHead->next = nullptr;
			pCurrent = pNewHead;
		}
	}

	while (pHead2)
	{
		if (pNewHead)
		{
			pCurrent->next = pHead2;
			pHead2 = pHead2->next;
			pCurrent = pCurrent->next;
			pCurrent->next = nullptr;
		}
		else
		{
			pNewHead = pHead2;
			pHead2 = pHead2->next;
			pNewHead->next = nullptr;
			pCurrent = pNewHead;
		}
	}

	return pNewHead;
}
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务