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

合并两个排序的链表

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;
}
全部评论

相关推荐

03-03 10:35
3d人士会梦见住进比弗利山庄吗:这四个项目属于是初学者的玩具了。不知道面试官咋问,而且双非本搞算法除了9,还是保守至少c9
点赞 评论 收藏
分享
03-07 13:32
门头沟学院 C++
D0cC:你是本科生吗,太厉害了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务