您的位置:首页 > 其它

合并两个有序单链表

2009-08-21 07:51 351 查看
struct node{
	int data;
	node* next;
};
typedef node* List;
List mergeSortedLinkList(List &list1, List &list2)
{
	if (list1 == NULL)
	{
		return list2;
	}
	if (list2 == NULL)
	{
		return list1;
	}
	List pList1 = list1;
	List pList2 = list2;
	List mergedList = NULL;
	if (pList1->data <= pList2->data)
	{
		mergedList = pList1;
		pList1 = pList1->next;
	}
	else
	{
		mergedList = pList2;
		pList2 = pList2->next;
	}
	List pCurNode = mergedList;
	while(pList1 && pList2)
	{
		if (pList1->data <= pList2->data)
		{
			pCurNode->next = pList1;
			pCurNode = pList1;
			pList1 = pList1->next;
		}
		else
		{
			pCurNode->next = pList2;
			pCurNode = pList2;
			pList2 = pList2->next;
		}
	}
	
	if (pList1 != NULL)
	{
		pCurNode->next = pList1;
	}
	if (pList2 != NULL)
	{
		pCurNode->next = pList2;
	}
	
	return mergedList;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: