方法一: 反转前后指针,通过建立三个指针的移动,将两两相邻的结点依次进行反转。
//单链表的逆置---相邻指针
PNode ReverseList(PNode pHead)
{
PNode pPre = pHead;
PNode pCur = NULL;
PNode pNext = NULL;
if (NULL == pHead || NULL == pHead->_pNext)
return;
//多个节点
pCur = pPre->_pNext;
pNext = pCur->_pNext;
pHead->_pNext = NULL;
while (pNext)
{
pCur->_pNext = pPre;
pPre = pCur;
pCur = pNext;
pNext = pCur->_pNext;
}
pCur->_pNext = pPre;
return pCur;
}
方法二:头插法,新建一个头结点,将原链表的结点依次头插到新链表中。
// 单链表的逆置--头插法
PNode ReverseList2(PNode pHead)
{
PNode pPre = NULL;
PNode pCur = NULL;
PNode pNewHead = NULL;
if (NULL == pHead || NULL == pHead->_pNext)
return pHead;
pPre = pHead;
pCur = pPre->_pNext;
while (pCur)
{
pPre->_pNext = pNewHead;
pNewHead = pPre;
pPre = pCur;
pCur = pCur->_pNext;
}
pPre->_pNext = pNewHead;
pNewHead = pPre;
return pNewHead;
}
链表的基本操作:http://blog.csdn.net/qq_37934101/article/details/78133585