题目
输入两个递增排序的链表,合并这两个链表并使新链表中的节点人是按照递增排序的。
思路
两个链表分别都已经是有序的了,遍历链表的时候只要比较两个链表当前位置大小,取出最小的添加到新链表中。
/* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } };*/ class Solution { public: ListNode* Merge(ListNode* head1, ListNode* head2) { if(head1==nullptr&&head2==nullptr) return nullptr; else if(head1==nullptr&&head2) return head2; else if(head1&&head2==nullptr) return head1; ListNode *h1=head1; ListNode *h2=head2; ListNode *newHead=new ListNode(-1); ListNode *h3=newHead; while(h1&&h2) { if(h1->val<=h2->val) { h3->next=h1; h3=h3->next; h1=h1->next; } else { h3->next=h2; h3=h3->next; h2=h2->next; } } if(h1) h3->next=h1; else if(h2) h3->next=h2; return newHead->next; } };