本文共 1288 字,大约阅读时间需要 4 分钟。
struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {}};class Solution {//this is a very simple implementation//one pointer and one pointer's pointerpublic: ListNode * mergeTwoList(ListNode *l1, ListNode *l2) { ListNode *h = NULL; ListNode **p = &h; while(l1 && l2) { if(l1->val < l2->val) { *p = l1; l1 = l1->next; } else { *p = l2; l2 = l2->next; } p = &((*p)->next); } if(l1) *p = l1; else *p = l2; return h; }};
second time
/** * 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) { // Start typing your C/C++ solution below // DO NOT write int main() function ListNode dummy(-1); ListNode* prev = &dummy; while(l1 != NULL && l2 != NULL) { ListNode* tmp; if(l1->val < l2->val) tmp = l1, l1 = l1->next; else tmp = l2, l2 = l2->next; prev->next = tmp; prev = prev->next; } if(l1 == NULL && l2 == NULL) prev->next = NULL; if(l1 != NULL) prev->next = l1; if(l2 != NULL) prev->next = l2; return dummy.next; }};
转载地址:http://elxti.baihongyu.com/