LeetCode(206):反转单向链表

题目描述:

定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点

示例:

输入: 1->2->3->4->NULL
输出: 4->3->2->1->NULL

双指针法

定义两个指针cur,pre(一左一右)
初始化cur为空,初始化pre指向头节点

在每一轮循环中:
1、用临时指针N保存pre->next,防止链表提前断开
2、让pre的next指向cur
3、将pre和cur都向链表原方向 移动一个节点

当pre为空时,链表反转完成,此时cur指向原链表的最后一个节点
代码如下:

class Solution {
public:
    ListNode* reverseList(ListNode* head) {
        ListNode* cur = NULL, *pre = head;
        while (pre != NULL) {
            ListNode* N = pre->next;
            pre->next = cur;
            cur = pre;
            pre = N;
        }
        return cur;
    }
};
原文地址:https://www.cnblogs.com/baebae996/p/13844700.html