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

合并两个排序的链表

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 *p1,*p2,*ans,*tail;   //分别为工作节点
	p1=pHead1;
	p2=pHead2;
    ans=(ListNode *)malloc(sizeof(ListNode));  //申请头结点
	tail=ans;
	ans->next=nullptr;
	while(p1&&p2){
		// cout<<p1->val<<" "<<p2->val<<endl;
		if(p1->val<=p2->val)
		{
			tail->next=p1;
			tail=p1;
			p1=p1->next;
		}	
		else
		{
			tail->next=p2;
			tail=p2;
			p2=p2->next;
		} 	
	}
	while(p1){        //把链表剩余的元素直接加入
          tail->next=p1;
		  break;
	}
	while(p2){       //把链表剩余的元素直接加入
		  tail->next=p2;
		  break;
	}
	return ans->next;
    }
};

全部评论

相关推荐

高斯林的信徒:问你有没有保底,好人啊,就差把这是kpi面告诉你了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务