leetcode: Merge Two Sorted Lists

来源:互联网 发布:开票软件镇海区 编辑:程序博客网 时间:2024/06/06 21:44

Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.

analysis: find a main link and a sub link.


/** * 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 *pMain, *pSub, *cur, *next;                if (!l1 || !l2) {            return l1 ? l1 : l2;        }        pMain = l1->val < l2->val ? l1 : l2;        pSub = l1->val < l2->val ? l2 : l1;        cur = pMain;        next = cur->next;                while (cur && pSub && next) {            if (cur->val <= pSub->val && next->val >= pSub->val) {                ListNode *tmp = pSub;                pSub = pSub->next;                cur->next = tmp;                tmp->next = next;            } else {                 cur = next;            }            next = cur->next;        }                if (pSub) {            cur->next = pSub;        }                return pMain;    }};


0 0
原创粉丝点击