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

合并两个排序的链表

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* p=pHead1,*q=pHead2;
		//创建一个虚拟头结点
		ListNode* Head=new ListNode(0);
		Head->next=NULL;
		//创建尾指针尾插
		ListNode* tail=Head;
		while(p&&q)
		{
			ListNode* t=NULL;//临时存储p/q的后继
			if(p->val<=q->val)
			{
				t=p->next;
				p->next=tail->next;
				tail->next=p;
				tail=p;
				p=t;
			}
			else {
				t=q->next;
				q->next=tail->next;
				tail->next=q;
				tail=q;
				q=t;
			}
		}
		//处理还有剩余的
		if(q)  p=q;
		tail->next=p; 
		return Head->next;
    }
};

全部评论

相关推荐

06-18 08:36
湖南大学 Java
运营你豪哥:没啥拷打的 1.增加量化结果,现在有点缺效果数据 2.突出复杂性,现在的项目描述有点像功能清单,强调一下技术难点和解决方案。
不给转正的实习,你还去吗
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-15 12:20
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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