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

合并两个排序的链表

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

感觉这道题目还是比较简单的,思路和逻辑都比较容易理顺,但是一定要注意细节哇!!!pHead1 = pHead2 -> next是什么东西??!!!

哦对了,记得返回值是虚拟节点的next!

/*
struct ListNode {
	int val;
	struct ListNode *next;
	ListNode(int x) :
			val(x), next(NULL) {
	}
};*/
#include <cstddef>
class Solution {
public:
    ListNode* Merge(ListNode* pHead1, ListNode* pHead2) {
		//设置一个指针指向虚拟节点
		ListNode *dummy =new ListNode(-1);
		ListNode *pre = dummy;
 		//通一个while循环,不断比较list1和list2当前头结点值的大小,直到两个链表遍历完成
		while(pHead1 != NULL && pHead2 != NULL)
		{
			//如果list1的值小于list2的值,就让pre指向list1
			if(pHead1 ->val <= pHead2 ->val){
				pre ->next = pHead1;
				//同时让list1往后移一位
				pHead1 = pHead1 ->next;
			}
			//反之,list2
			else{
				pre ->next = pHead2;
				//同时让list1往后移一位
				pHead2 = pHead2 ->next;
			}
			//pre向后面移动,pre始终指向已经排序成功的那个节点
			pre = pre ->next;			
		}
		if(pHead1 != NULL){
			pre ->next = pHead1;
		}
		if(pHead2 != NULL){
			pre ->next =pHead2;
		}
        return dummy ->next;
    }
};

全部评论

相关推荐

饼子吃到撑:学院本是这样的,找工作拼运气,你技术再好人家筛选学历照样沉入海底,海投就行了
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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