/**
* struct ListNode {
* int val;
* struct ListNode *next;
* ListNode(int x) : val(x), next(nullptr) {}
* };
*/
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param pHead1 ListNode类
* @param pHead2 ListNode类
* @return ListNode类
*/
ListNode* Merge(ListNode* pHead1, ListNode* pHead2) {
// write code here
if(pHead1==NULL){
return pHead2;
}
if(pHead2==NULL){
return pHead1;
}
ListNode *newHead=new ListNode(0); //创建一个表头,后面返回值记得去掉这个表头再返回
ListNode *node=newHead;
while(pHead1&&pHead2){
if(pHead1->val>pHead2->val){
swap(pHead1,pHead2); //交换两个指针的指向,pHead1永远指向较小的值
}
node->next=pHead1;
pHead1=pHead1->next;
node=node->next;
}
node->next=(pHead1?pHead1:pHead2);
return newHead->next; //返回值要去掉表头
}
};
if(pHead1->val>pHead2->val){
swap(pHead1,pHead2); //交换两个指针的指向,pHead1永远指向较小的值
}
pHead1 和 pHead2 是两个链表的头指针,分别指向两个有序链表的第一个节点。
swap(pHead1, pHead2) 就是将两个指针pHead1 和 pHead2 的指向进行交换,这样就实现了将链表1中较小的节点放在链表2的前面,以确保合并后的链表仍然是有序的。