设三个指针p, ppre, pNext,分别指向当前结点,当前节点的前一个节点,当前节点的后一个节点。
class Solution {
public:
ListNode* reverseList(ListNode* head) {
if (head == NULL || head->next == NULL) return head;
ListNode *p = head;
ListNode *pNext = NULL;
ListNode *ppre = NULL;
while (p) {
pNext = p->next;
p->next = ppre;
ppre = p;
p = pNext;
}
return ppre;
}
};