leetcode 21 合并两个链表

2018-02-16  本文已影响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;
}
上一篇 下一篇

猜你喜欢

热点阅读