题解 | #合并两个排序的链表#
合并两个排序的链表
https://www.nowcoder.com/practice/d8b6b4358f774294a89de2a6ac4d9337
链表迭代思路
面对两个有序链表,初始化一个新节点(-1)
A->B....
C->D....
我们要做的是比较A和C的大小,-1指向更小的节点,更小的节点向后迭代,随后temp = temp->next迭代
temp-> a<=c?a:c
a = b
temp=temp->next
最后的退出机制是当有一个链表为空时,此时temp指向不为空的链表节点
temp-> a == nullptr?a:c
最后返回(-1)->next,将-1内存删除,避免内存泄漏
class Solution {
public:
ListNode* Merge(ListNode* pHead1, ListNode* pHead2) {
ListNode* newList = new ListNode(-1);
ListNode* temp = newList;
while(pHead1!=nullptr && pHead2!=nullptr){
if(pHead1->val<=pHead2->val){
temp->next=pHead1;
pHead1 = pHead1->next;
temp = temp->next;
}else{
temp->next=pHead2;
pHead2 = pHead2->next;
temp = temp->next;
}
}
if(pHead1==nullptr){
temp->next = pHead2;
}else{
temp->next = pHead1;
}
ListNode* result = newList->next;
newList = nullptr;
delete newList;
return result;
}
};