很普通的单向链表转置,主要方法是利用NODE *pCur指向待改变方向的节点,利用NODE *pRev指向待改变方向节点的上一个节点(如果是第一个节点,即头节点,因为转置后该节点变为尾节点,则此时为NULL),在循环中创建一个中间变量NODE* pTmp,利用中间变量 tmp 存储 cur指针变量存储的节点地址,然后改变cur指向下一个节点,再将tmp指针指向的节点的pNext = pRev,此时pRev已经被指向,完成了它的任务(此时pTmp已经完成转置),则改变它指向的节点的地址为pTmp,使pTmp成为下一个被指向的节点。具体代码如下
void LinkReverse(NODE *pHead)
{
if( pHead == NULL)
{
return;
}
NODE *pRev = NULL;
NODE *pCur = pHead;
while(pCur != NULL)
{
NODE *pTmp = pCur;
pCur = pCur->pNext;
pTmp->pNext = pRev;
pRev = pTmp;
}
}