您的位置:首页 > 职场人生

合并两个有序链表(非交叉)

2013-03-11 19:48 281 查看
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  笔试面试