题目
输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。
思路
合并列表和合并链表都是有一定的套路。由于是链表,在前面加一个头节点,消除特殊化
代码
class Solution {
public:
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
ListNode* l=(ListNode*)malloc(sizeof(ListNode));#新创一个头节点
l->next=NULL;
ListNode *ll=l;# ll指针指向l,连表
ListNode *p=l1;
ListNode *q=l2;
ListNode *r=NULL;
while(p&&q){
if(p->val<q->val){
r=p->next;
p->next=NULL;
ll->next=p;
ll=p;
p=r;
}
else{
r=q->next;
q->next=NULL;
ll->next=q;
ll=q;
q=r;
}
}
if(p)
ll->next=p;
if(q)
ll->next=q;
return l->next;
}
};