1. 程式人生 > >兩個有序連結串列在不佔用其他的記憶體的情況下合併成一個新的連結串列(類似到歸併排序的歸併)

兩個有序連結串列在不佔用其他的記憶體的情況下合併成一個新的連結串列(類似到歸併排序的歸併)

int MergeList_L(Linklist &L1,Linklist &L2,Linklist &L3)
{
	Linklist p=L3;
	while(L1->next&&L2->next)
	{
		if(L1->next->data<=L2->next->data)           
  		{
			p->next=L1->next;//拼接
			L1->next=L1->next->next;//將節點移走
			p=p->next;//遊標右移始終保持在最後一個節點
		}
		else 
		{
		p->next=L2->next;
		L2->next=L2->next->next;
		p=p->next;
		}		
	}
	if(L1->next)
 		p->next=L1->next;//剩餘直接拼接
	if(L2->next)
		p->next=L2->next;//同上
}

思想:

節點逐個拼接,移動;