码迷,mamicode.com
首页 > 其他好文 > 详细

[LeetCode]Merge Two Sorted Lists

时间:2015-02-12 21:27:59      阅读:262      评论:0      收藏:0      [点我收藏+]

标签:

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.

这道题是让合并两个有序链表。增设一个头结点。下面贴上代码:

#include <iostream>
using namespace std;


struct ListNode {
     int val;
     ListNode *next;
     ListNode(int x) : val(x), next(NULL) {}
};

class Solution {
public:
    ListNode* create(){
        int num;
        cout << "请输入个数:";
        cin >> num;
        ListNode* head = new ListNode(0);
        ListNode* first = head;
        for (int i = 0; i < num; i++){
            int n;
            cin >> n;
            ListNode* newNode = new ListNode(n);
            head->next = newNode;
            head = newNode;
        }
        return first->next;
    }
    ListNode *mergeTwoLists(ListNode *l1, ListNode *l2) {
        ListNode* h1 = l1;
        ListNode* h2 = l2;
        ListNode* ans = new ListNode(0);
        ListNode* l3 = ans;
        while (h1&&h2){
            if (h1->val <= h2->val){
                ans->next = h1;
                ans = h1;
                h1 = h1->next;
            }
            else{
                ans->next = h2;
                ans = h2;
                h2 = h2->next;
            }
        }
        ans->next = h1 ? h1 : h2;
        return l3->next;
    }
};
int main(){
    Solution s;
    ListNode* l1 = s.create();
    ListNode* l2 = s.create();
    ListNode* l3 = s.mergeTwoLists(l1, l2);
    while (l3){
        cout << l3->val << " ";
        l3 = l3->next;
    }
    cout << endl;
    return 0;
}

附加了链表的建立以便测试。

[LeetCode]Merge Two Sorted Lists

标签:

原文地址:http://blog.csdn.net/kaitankedemao/article/details/43769667

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!