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

合并两个排序的链表

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) {
		if(pHead1 == NULL)
		    return pHead2;
		if(pHead2 == NULL)
		    return pHead1;
        ListNode *p1,*p2,*tail;
		p1 = pHead1;
		p2 = pHead2;
		//将pHead作为新链表的头结点
		if(pHead1->val>pHead2->val)
		{
			pHead1 = pHead2;
			p2 = p2->next;
		}
		else
		{
			p1 = p1->next;
		}
		tail = pHead1;
		ListNode * temp;
		while(p1&&p2)
		{
			if(p1->val>p2->val)
			{
				temp = p2->next;
				tail->next = p2;
				tail = p2;
				p2 = temp;
			}
			else
			{
				temp = p1->next;
				tail->next = p1;
				tail = p1;
				p1 = temp;
			}
		}
		if(p1) 
		{
			tail->next = p1;
		}
		if(p2)
		{
			tail->next = p2;
		}
		return pHead1;
    }
};

全部评论

相关推荐

想按时下班的大菠萝在...:隔壁学校的,加油多投, 实在不好找可以下个学期开学找,把算法八股准备好,项目有空再换换
投了多少份简历才上岸
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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