兩個有序鏈表合併遞歸實現及非遞歸實現

遞歸實現

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萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章