方法1:递归实现:
Node * MergeList(Node *Head1,Node *Head2)
{
if(Head1 == NULL)
{
return Head2;
}
if(Head2 == NULL)
{
return Head1;
}
Node *Head =NULL;
if(Head1->data > Head2->data)
{
Head =Head2;
Head->next= MergeList(Head1,Head2->next);
}
else
{
Head =Head1;
Head->next= MergeList(Head1->next,Head2);
}
return Head;
}
方法2:递归实现:已知两个链表head1 和head2 各自有序,请把它们合并成一个链表依然有序。(保留所有结点,即便大小相同)
Node * Merge(Node *head1 , Node *head2)
{
Node *head =NULL ;
Node *p1 =NULL;
Node *p2 =NULL;
Node *pcurrent =head;
if ( head1 == NULL)
{
return head2 ;
}
if ( head2 == NULL)
{
return head1 ;
}
if ( head1->data < head2->data )
{
head= head1 ;
p1 =head1->next;
p2 =head2 ;
}
else
{
head= head2 ;
p2 =head2->next ;
p1 =head1 ;
}
while ( p1 != NULL && p2 != NULL)
{
if ( p1->data <= p2->data )
{
pcurrent->next= p1 ;
pcurrent= p1 ;
p1= p1->next ;
}
else
{
pcurrent->next= p2 ;
pcurrent= p2 ;
p2= p2->next ;
}
}
if ( p1 != NULL )
{
pcurrent->next = p1 ;
}
if ( p2 != NULL )
{
pcurrent->next = p2 ;
}
return head ;
}