1.递归
node * MergeRecursive(node *head1, node *head2)
{
node *head = NULL;
if (head1 == NULL)
{
return head2;
}
if (head2 == NUL)
{
return head1;
}
if ( head1->data < head2->data )
{
head = head1 ;
head->next = MergeRecursive(head1->next,head2);
}
else
{
head = head2 ;
head->next = MergeRecursive(head1,head2->next);
}
return head ;
}
2.非递归
void mergeList(PTRNODE &res, PTRNODE list1, PTRNODE list2)
{
PTRNODE curNode = NULL;
if(list1 == NULL)
res = list2;
else if(list2 == NULL)
res = list1;
else
{
if(list1->value <= list2->value)
{
res = list1;
list1 = list1->next;
}
else
{
res = list2;
list2 = list2->next;
}
curNode = res;
while(list1 != NULL && list2 != NULL)
{
if(list1->value <= list2->value)
{
curNode->next = list1;
list1 = list1->next;
}
else
{
curNode->next = list2;
list2 = list2->next;
}
curNode = curNode->next;
}
if(list1 == NULL)
curNode->next = list2;
else
curNode->next = list1;
}
}