题解 | #合并两个排序的链表#
合并两个排序的链表
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;
}
};
