1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
| // 合并两个有序链表.cpp: 定义控制台应用程序的入口点。 //
#include "stdafx.h" #include <iostream> using namespace std;
struct ListNode { int val; ListNode *next; ListNode(int x = 0) : val(x), next(NULL) {} };
class Solution { public: ListNode * mergeTwoLists(ListNode* l1, ListNode* l2) { ListNode *l = new ListNode(0); ListNode *tem = new ListNode(0); tem = l; while (l1 && l2) { if (l1->val < l2->val) { l->next = new ListNode(0); l = l->next; l->val = l1->val;
l1 = l1->next; } else { l->next = new ListNode(0); l = l->next; l->val = l2->val;
l2 = l2->next; } } while (l1) { l->next = new ListNode(0); l = l->next; l->val = l1->val;
l1 = l1->next; } while (l2) { l->next = new ListNode(0); l = l->next; l->val = l2->val;
l2 = l2->next; } l = tem; l = l->next; return l; } }; int main() { ListNode *l1 = new ListNode(); ListNode *tem1 = l1; ListNode *l2 = new ListNode(); ListNode *tem2 = l2; for (int i = 1; i < 4; i++) { l1->next = new ListNode(); l1 = l1->next; l1->val = i;
l2->next = new ListNode(); l2 = l2->next; l2->val = i; } l1 = tem1->next; l2 = tem2->next; Solution s; ListNode *l = new ListNode(); l = s.mergeTwoLists(l1, l2); while (l) { cout << l->val << " "; l = l->next; } return 0; }
|