Node *MergeRecursive(Node *head1,Node *head2)
{//递归合并两个有序链表
if(head1 == NULL)
return head2;
if(head2 == NULL)
return head1;
Node *head = NULL;
if(head1->data < head2->data)
{
head = head1;
head->next = MergeRecursive(head1->next,head2);
}
else
{
head = head2;
head->next = MergeRecursive(head1,head2->next);
}
return head;
}
Node *Merge(Node *head,Node *head1,Node *head2)
{//非递归合并两个有序链表
Node *tmp = head;
while(NULL != head1 && NULL != head2)
{
if(head1->data < head2->data)
{
tmp->next = head1;
tmp = head1;
head1 = head1->next;
}
else
{
tmp->next = head2;
tmp = head2;
head2 = head2->next;
}
}
if(NULL != head1)
{
tmp->next = head1;
}
if(NULL != head2)
{
tmp->next = head2;
}
return head;
}
合并两个有序链表(非交叉)
最新推荐文章于 2013-03-16 13:52:51 发布