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.
Example:
Input: 1->2->4, 1->3->4 Output: 1->1->2->3->4->4
就当复习单链表呗
/** * 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) { struct ListNode * res = NULL; struct ListNode * p1 = l1; //p1 p2 分别用来跟踪 l1,l2; p3永远指向新的链表的最后一个元素 struct ListNode * p2 = l2; struct ListNode * p3 = res; while(p1 != NULL && p2 != NULL){ int x ; if( p1->val < p2->val ){ x = p1->val; p1 = p1->next; } else{ x = p2->val; p2 = p2->next; } struct ListNode * temp = new ListNode(x); //新建一个节点 if(p3 == NULL){ //没有头节点就是很烦啊,各种NULL的判断 res = temp; p3 = res; } else{ p3->next = temp; p3 = p3->next; } } //一个结束了另一个还没有结束 if(p1 == NULL && p2 != NULL){ if(p3 == NULL) //一个都没加进去- - res = p2; else p3->next = p2; } else if(p1 != NULL && p2 == NULL){ if(p3 == NULL) //同样,一个都没加进去 res = p1; else p3->next = p1; } return res; } };