36合并两个排序的链表(二路归并)
作者:
什么意思O_o
,
2024-11-08 18:06:05
,
所有人可见
,
阅读 1
/**
* 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) {
auto dummy=new ListNode(-1),tail=dummy; //先定义一个新链表,头结点为-1,尾结点为现在的头结点
while(l1&&l2) //如果l1,l2不等于0就一直循环
{
if(l1->val<l2->val) //如果l1的值小于l2的值
{
tail=tail->next=l1; //尾结点的下一值为l1
l1=l1->next; //l1指向l1中的下一个值
}
else
{
tail=tail->next=l2;
l2=l2->next;
}
}
if(l1) tail->next=l1; //如果此时循环完以后l1中还有值,尾结点指向l1
if(l2) tail->next=l2;
return dummy->next; //最后输出dummy的下一值,开头的值不要了。因为dummy是从-1开始的
}
};