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

合并两个排序的链表

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

/*
struct ListNode {
	int val;
	struct ListNode *next;
	ListNode(int x) :
			val(x), next(NULL) {
	}
};*/
class Solution {
public:
    ListNode* Merge(ListNode* pHead1, ListNode* pHead2) {
		//添加一个表头
        ListNode* pHead3 = new ListNode(0);
		pHead3->next = pHead1;
		ListNode* res = pHead3;//记录表头
		while(pHead1 && pHead2)
		{
			if(pHead1->val <= pHead2 ->val)
			{
				pHead3 ->next = pHead1;
				pHead3 = pHead3->next;
				pHead1 = pHead1->next;
			}
			else
			{
				pHead3 ->next = pHead2;
				pHead3 = pHead3->next;
				pHead2 = pHead2->next;
			}
		}
		//如果执行完后,pHead1不为空,则把该链表余下的元素接在后面,否则接pHead2
		pHead3->next = (pHead1)?pHead1:pHead2;
		return res->next;
    }
};

解题思路:当链表1和2都不为空时,执行操作:如果链表1的数据小于链表2的数据,则把表1的结点链接到储存的表pHead3中,否则链接表2的结点。执行完后,把余下的不为空的链表全部链接到后面。

全部评论

相关推荐

烤点老白薯:他第二句话的潜台词是想让你帮他点个瑞幸或者喜茶啥的
mt对你说过最有启发的一...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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