[LeetCode]Merge Two Sorted Lists

来源:互联网 发布:数据建模 开源 编辑:程序博客网 时间:2024/05/29 07: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.

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

#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;}

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

0 0
原创粉丝点击