[leetcode][21. 合并两个有序链表]
程序员文章站
2024-03-22 11:29:01
...
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4
从答案来看,这个题的链表不带头结点的,好恶心。。。
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
ListNode *lnew,*ltail;
lnew=new ListNode(0);
ltail=lnew;
//ListNode* p=l1->next;
//ListNode* q=l2->next;
ListNode* p=l1;
ListNode* q=l2;
while(p&&q)
{
if(p->val<q->val)
{
ltail->next=p;
ltail=p;
p=p->next;
ltail->next=NULL;
}
else if(p->val>q->val)
{
ltail->next=q;
ltail=q;
q=q->next;
ltail->next=NULL;
}
else
{
ltail->next=p;
ltail=p;
p=p->next;
ltail->next=NULL;
ltail->next=q;
ltail=q;
q=q->next;
ltail->next=NULL;
}
}
while(p)
{
ltail->next=p;
ltail=p;
p=p->next;
ltail->next=NULL;
}
while(q)
{
ltail->next=q;
ltail=q;
q=q->next;
ltail->next=NULL;
}
//return lnew;
ListNode* result=lnew->next;
return result;
}
};
上一篇: 【C语言】双向循环链表
下一篇: leetcode刷题 移除元素