两个有序链表合并递归实现及非递归实现

递归实现

Node* Merge(Node *head1,Node *head2)
{
	if (head1==NULL)
	{
		return head2;
	}
	if (head2==NULL)
	{
		return head1;
	}
	if (head1->data<head2->data)
	{
		head=head1;
		head->next=Merge(head1->next,head2);
	}
	else
	{
		head=head2;
		head->next=Merge(head1,head2->next);
	}
}
return head;

非递归实现

Node* Merge(Node *head1,Node *head2)
{
Node *pa, *pb, *pc;
pa = head1->next;
pb = head2->next;
pc =pa;
while(pa && pb){
if(pa->data <= pb->data)
{
pc->next = pa;
pc = pc->next;
pa = pa->next;
}  
else{
pc->next = pb;
pc = pc->next;
pb = pb->next;
}
}  
pc->next = pa? pa:pb; 
free(head2);
return pc;
}



发布了35 篇原创文章 · 获赞 4 · 访问量 4万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章