LeetCode——206. 反转链表

文章目录

  • 1.问题描述
  • 2.解决办法
    • 1.迭代
  • 3.代码实现

1.问题描述

LeetCode——206. 反转链表_第1张图片

2.解决办法

1.迭代

在遍历链表时,将当前节点的 next 指针改为指向前一个节点。由于节点没有引用其前一个节点,因此必须事先存储其前一个节点。在更改引用之前,还需要存储后一个节点。最后返回新的头引用。
所以我们定义pre 指向前一个节点并定义为null, 定义一个next指向下一个节点,如果当前结点不为空,则先将该节点的下一个节点暂存到新定义的next(非常重要,要不无法往后继续),然后讲该节点的next指向pre,以此pre和新定义next往后推,直到head等于null。

3.代码实现

class Solution {
    public ListNode reverseList(ListNode head) {
    ListNode pre = null;
    ListNode next = null;
    while (head != null) {
        next = head.next;
        head.next = pre;
        pre = head;
        head = next;
    }
    head=pre;
    return pre;

    }
}

你可能感兴趣的:(算法,链表,leetcode,数据结构)