美文网首页
leetcode 21 合并两个链表

leetcode 21 合并两个链表

作者: 吃个小烧饼 | 来源:发表于2018-02-16 13:52 被阅读10次

rt。按照非降序合并。

这个就很像mergesort的merge过程。需要注意的是要发挥链表的特点。比如merge sort中最后的元素插入需要循环,而链表直接指向链表就好了。

代码如下:

ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
    ListNode *p1 = l1, *p2 = l2;
    ListNode *ret = new ListNode(0);
    ListNode *r= ret;
    while(p1 && p2) {
        if(p1->val < p2->val) {
            r = p1;
            p1 = p1->next;
        } else {
            r= p2;
            p2 = p2->next;
        }
        r = r->next;
    }
    if(p1)
        r = p1;
    if(p2)
        r = p2;
    r = ret;  //让r指向ret头部
    ret = r->next;
    delete(r);
    return ret;
}

相关文章

网友评论

      本文标题:leetcode 21 合并两个链表

      本文链接:https://www.haomeiwen.com/subject/hprptftx.html