题目描述
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.
实现代码:
/**
* 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) {
if(l1==NULL) return l2;
if(l2==NULL) return l1;
if(l1==NULL && l2==NULL) return NULL;
ListNode* head=new ListNode(0);
ListNode* headcopy=head;
ListNode* head1=l1;
ListNode* head2=l2;
while(head1!=NULL && head2!=NULL) //有一个比较结束就停止循环;
{
if(head1->val < head2->val)
{
head->next=head1;
head=head->next;
head1=head1->next;
}
else
{
head->next=head2;
head=head->next;
head2=head2->next;
}
}
if(head1 == NULL) //head1结束,将和head2剩下的拼接上;
head->next=head2;
if(head2 == NULL) //head2结束,将和head1剩下的拼接上;
head->next=head1;
return headcopy->next;
}
};