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

合并两个排序的链表

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

相关推荐

02-14 12:40
门头沟学院 Java
程序员花海:1.面试要求必须Java笔试不一定 2.难度对等秋招 远超于日常实习是因为同一批次且转正很多 竞争压力大 3.第一个加点指标,上线了就把接口性能加上去 使用本地缓存这个不算亮点 只是技术选型,要把为什么采用这个和背后的思考写出来而不是单纯堆叠技术没意义 4.八股要一直看 很容易忘记 5.拼团交易这个老问题 堆积技术 另外建议你把奖项合并到教育背景 没必要拆出来放最后
我的简历长这样
点赞 评论 收藏
分享
要AC不要WA:投一天,喜提两笔试
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务