AcWing 36. 合并两个排序的链表
原题链接
简单
作者:
苹果派
,
2020-04-26 16:35:21
,
所有人可见
,
阅读 683
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* merge(ListNode* l1, ListNode* l2) {
if(!l1 || !l2) return l1 ? l1 : l2; //判断是否其中一个为空,有则返回不是空的那一个
ListNode *head = new ListNode(0);
ListNode *tail = head, *a = l1, *b = l2; //定义一个哑节点,tail指向待插入位置的前一个位置,a,b分别指向两个链表
while(a && b)
{
if(a -> val < b -> val)
{
tail -> next = a;
a = a -> next;
}
else
{
tail -> next = b;
b = b -> next;
}
tail = tail -> next;
}
tail -> next = a ? a : b;
return head -> next;
}
};