链表反转非递归算法!看不懂打死我!

算法使用三个指针实现,每次循环将反转pre和head指向的节点

  1. pre:指向前一个节点,原头节点的前一个节点(反转后最后一个节点的下一个节点)为null,所以初始化pre=null
  2. head:指向当前节点,head为null时,循环结束
  3. next:存储head的下一个节点,因为在调整head和pre之间的关系时,head.next=pre,所以原head.next需要存起来,不然下次循环就找不到了

在这里插入图片描述

上代码

public static Node reverse(Node head){
        Node pre = null;
        Node next = null;
        while (head != null) {
            next = head.next;
            head.next = pre;
            pre = head;
            head = next;
        }
        return pre;
    }
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 像素格子 设计师:CSDN官方博客 返回首页