/**
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* ReverseList(struct ListNode* pHead ) {
struct ListNode *pCur = pHead;
struct ListNode *pNext =NULL;
struct ListNode *pLast =NULL;
while (pCur != NULL) {
pNext = pCur->next; //记录下一个Node位置
pCur->next = pLast; //插入节点,建立新链表
pLast = pCur; //记录上一个Node位置
pCur = pNext; //指针指向下一个Node
}
return pLast;
}
总结:在对当前节点进行操作之前需要记录下下一个节点的位置 pNext = pCur->next,这样就可以对每一个节点做同样的操作。当我们遇到链表相关问题,可以看看下面3个指针是否有帮助:
struct ListNode *pCur ;
struct ListNode *pNext ;
struct ListNode *pLast ;