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* mergeTwoLists(ListNode* l1, ListNode* l2) {
ListNode* p = new ListNode(0);
ListNode* head = p;
while(l1&&l2) {
if(l1->val<l2->val) {
p->next = l1;
l1 = l1->next;
} else {
p->next = l2;
l2 = l2->next;
}
p = p->next;
}
if(l1) {
p->next= l1;
}
if(l2) {
p->next= l2;
}
return head->next;
}
};
int main() {
int a1[] = {
1,3,5,7,9
};
int a2[] = {
2,4,6,8,10
};
ListNode* l1 = new ListNode(a1[0]);
ListNode* l2 = new ListNode(a2[0]);
ListNode* head1 = l1;
ListNode* head2 = l2;
for(int i=1;i<5;i++){
l1->next = new ListNode(a1[i]);
l2->next = new ListNode(a2[i]);
l1 = l1->next;
l2 = l2->next;
}
Solution s;
ListNode* head = s.mergeTwoLists(head1, head2);
while(head) {
cout<<head->val<<" ";
head=head->next;
}
cout<<"\nend"<<endl;
}