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

来源:互联网 发布:matlab生成无标度网络 编辑:程序博客网 时间:2024/05/29 04:47

题目: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;    }};


0 0