题目:给出一个链表和一个数k,比如链表1→2→3→4→5→6,逆置后6→5→4→3→2→1
分析:
因为单链表只能找到next节点,不能找到prev节点,所以必须借助辅助指针来保存原来链表的状态。
我们可以把过程分成下面几步:
1)pNext 保存 pHead->next 2)pHead->next 指向 pPre 3)pPre 指向 pHead保存原来的上一个节点 4)pHead指向pNext继续遍历链表
重复这几步直到pHead指向NULL:
Node* ReverseList(Node* pHead){
Node* pPre = NULL;
/*pHead遍历链表*/
while (pHead != NULL){
Node* pNext = pHead->_pNext;/*保存修改前的next节点*/
pHead->_pNext = pPre;
pPre = pHead;/*保存修改前的prev节点*/
pHead = pNext;
}
/*此时pHead为空,pPre指向原来的最后一个节点,就是新的头结点*/
return pPre;
}