
因为这是单链表,所以我们不能找到一个节点的前驱节点,所以我们要用一个变量来记录前驱节点。使用两个指针,这两个指针一起向前走且间隔为1,然后从前往后遍历,将所有指针的指向都反过来即可。
- /**
- * Definition for singly-linked list.
- * struct ListNode {
- * int val;
- * ListNode *next;
- * ListNode(int x) : val(x), next(NULL) {}
- * };
- */
- class Solution {
- public:
- ListNode* reverseList(ListNode* head) {
- ListNode* pre = NULL;
- ListNode* cur = head;
- while (cur)
- {
- ListNode* next = cur->next;
- cur->next = pre;
- pre = cur;
- cur = next;
- }
- return pre;
- }
- };