//reverse single linked list
struct ListNode
{
int m_nkey;
ListNode *m_pNext;
}
ListNode *ReverseList(ListNode *pHead)
{
if(pHead == NULL || pHead->m_pNext == NULL)
return pHead;
ListNode * pReverseHead = NULL;
ListNode * pCurrent = NULL;
while(pCurrent != NULL)
{
ListNode * pTemp = pCurrent;
pCurrent = pCurrent->m_pNext;
pTemp->m_pNext = pReverseHead;
pReverseHead = pTemp;
}
return pReverseHead;
}