您的位置:首页 > 其它

【leetcode每日一题】NO21.Merge Two Sorted Lists

2015-08-12 09:15 351 查看
题目: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.

解析:与有序数组合并类似,先声明一个指针,指向值小的头结点,再遍历两个指针,依次比较大小。

代码:

/**
 * 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) {
        if(l1==NULL)
            return l2;
        if(l2==NULL)
            return l1;
        ListNode *result,*curNode;
        if(l1->val<l2->val)
        {
            result=curNode=l1;
            l1=l1->next;
        }
        else
        {
            result=curNode=l2;
            l2=l2->next;
        }
        while(l1!=NULL&&l2!=NULL)
        {
            if(l1->val<l2->val)
            {
                curNode->next=l1;
                l1=l1->next;
                curNode=curNode->next;
            }
            else
            {
                curNode->next=l2;
                l2=l2->next;
                curNode=curNode->next;
            }
        }
        while(l1!=NULL)
        {
            curNode->next=l1;
            l1=l1->next;
            curNode=curNode->next;
        }
        while(l2!=NULL)
        {
            curNode->next=l2;
            l2=l2->next;
            curNode=curNode->next;
        }
        return result;
    }
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: