#include<iostream>
using namespace std;
template<typename T>
struct Node
{
T m_Data;
Node * m_pNext;
};
//插入排序
template<typename T>
bool InsertSort(Node<T> * & pHead)
{
Node<T> * pCurNode = NULL;
Node<T> * pPrevNode = NULL;
Node<T> * pPrevNode2 = NULL;
Node<T> * pNextNode = NULL;
Node<T> * pTemp = NULL;
T tTemp;
if (pHead == NULL)
return false;
if (pHead->m_pNext == NULL)
return true;
for (pPrevNode = pHead,pCurNode = pHead->m_pNext; pCurNode;)
{
pNextNode = pCurNode->m_pNext;
tTemp = pCurNode->m_Data;
for (pTemp = pHead, pPrevNode2 = NULL; (pTemp != pCurNode) && (pTemp->m_Data <= tTemp); pPrevNode2 = pTemp, pTemp = pTemp->m_pNext);
if (pTemp != pCurNode)
{
if (pPrevNode2 == NULL)
{
//头结点
pPrevNode->m_pNext = pCurNode->m_pNext;
pCurNode->m_pNext = pTemp;
pHead = pCurNode;
pCurNode = pPrevNode->m_pNext;
continue;
}
//中间插入
pPrevNode2->m_pNext = pCurNode;
pCurNode->m_pNext = pTemp;
pPrevNode->m_pNext = pNextNode;
pCurNode = pNextNode;
continue;
}
pPrevNode = pCurNode;
pCurNode = pCurNode->m_pNext;
}
return true;
}
模版插入
最新推荐文章于 2024-04-28 15:15:25 发布