题目描述

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

有点绕,不要用赋值的想法来理解,用指针移动来理解就通了。

解题思路

  • 设置三个指针,currentNode 为当前节点,pre为当前节点的前一个节点,next为当前节点的下一个节点,需要pre和next的目的用pre让节点反转所指方向,next节点保存next1节点防止链表断开。
    [剑指Offer]-反转链表
算法图解

[剑指Offer]-反转链表

参考代码:
package offer;

/**
 * @author xianglei
 * 输入一个链表,反转链表后,输出新链表的表头。
 */
public class Offer24 {
    public static void main(String[] args) {
        LinkNode<Integer> LinkNode = new LinkNode<Integer>();
        LinkNode<Integer> node2 = new LinkNode<Integer>();
        LinkNode<Integer> node3 = new LinkNode<Integer>();
        LinkNode<Integer> node4 = new LinkNode<Integer>();
        LinkNode<Integer> node5 = new LinkNode<Integer>();
        LinkNode.next = node2;
        LinkNode.node_value = 1;
        node2.next = node3;
        node2.node_value = 2;
        node3.next = node4;
        node3.node_value = 3;
        node4.next = node5;
        node4.node_value = 4;
        node5.node_value = 5;
        node5.next = null;
        System.out.println(ReversLinkedList(LinkNode).node_value);
    }

    static LinkNode<Integer> ReversLinkedList(LinkNode<Integer> head) {
        /**
         * node  当前节点  pre 前一个 next  后一个
         */
        if (head == null)
            return null;
        LinkNode pre = null;
        LinkNode next = null;
        LinkNode currentNode = head;
        while (currentNode != null) {
            next = currentNode.next;  // 实现保存一个next、防止断裂无法遍历  (下一个节点保存到next)
            // 如果下一个节点是空  说白了就是反转后的头节点  直接返回即可
            if (next == null) {
                pre = next;
            }
            currentNode.next = pre;  // 下一个节点赋值为他的前一个节点 当前节点的指针指向前一个节点
            pre = currentNode;      // 把当前节点赋值给前一个节点----pre指针后移
            currentNode = next;     //下一个节点赋值为当前节点----currentNode指针后移
        }
        return pre;
    }

}



附录

该题源码在我的 ????Github 上面!

相关文章:

  • 2021-06-03
  • 2021-08-13
  • 2021-05-04
  • 2021-09-12
  • 2022-01-10
  • 2021-09-17
  • 2021-05-17
  • 2021-09-04
猜你喜欢
  • 2018-04-07
  • 2021-10-25
  • 2021-08-19
  • 2022-01-10
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案