鏈表的冒泡排序

由於鏈表的特殊性,只存在後向指針,所有的數只能向後移動,所以採用冒泡排序時先把最大的數交換到最後,然後第二大的數交換到倒數第二個結點上,注意每次交換的邊界的更新。

void ListSort(ListNode* pHead)
{
	if(pHead == NULL)
		return;
 
	ListNode *pEnd, *pNode;
	pEnd = NULL;
 
	while(pEnd != pHead)
	{
		for(pNode = pHead; pNode->m_pNext != pEnd; pNode = pNode->m_pNext)
		{
			if(pNode->m_nValue > (pNode->m_pNext->m_nValue))
			{
				int tmp = pNode->m_nValue;
				pNode->m_nValue = pNode->m_pNext->m_nValue;
				pNode->m_pNext->m_nValue = tmp;
			}
		}
		pEnd = pNode;
	}
}




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章