zoukankan      html  css  js  c++  java
  • 链表的翻转(java)

    翻转的两种方法:非递归与递归。

    1、非递归方法

    public ListNode reverse(ListNode node) {
                Node prev = null;
                while (node != null) {
                    //每次新建一个链表,用来读取每次循环操作的一个节点
                    ListNode tmp = node;
                    //将传入的链表指向下一个节点,下次循环将下一个节点重新赋给tmp
                    node = node.next;
                    //将取出的节点的下一个节点置为上次操作后已完成翻转的部分节点
                    tmp.next = prev;
                    //将新的完成翻转部分的节点重新赋给待输出的链表
                    prev = tmp;
                }
                //输出已完成翻转的链表
                return prev;
      }
            
    

    2、递归方法

    public Node reverse(ListNode node) {
                ListNode prev = null;
                 //递归判断条件,当链表为空或只有一个节点时,跳出递归
                if (node == null || node.next == null) {
                    prev = node; 
                } else {
                    //完成原链表完成从第二个节点到最后一个节点间的翻转
                    ListNode tmp = reverse(node.next);
                    //原链表第二个节点指向第一个节点
                    node.next.next = node;
                    //原链表第一个节点指向空,完成链表翻转
                    node.next = null;
                    prev = tmp;
                }
                return prev;
    }
    

      

      

  • 相关阅读:
    Docker安装nexus
    docker常用操作备忘
    react-01
    SBT实操指南
    Play中JSON序列化
    SPARK安装一:Windows下VirtualBox安装CentOS
    SPARK安装三:SPARK集群部署
    SPARK安装二:HADOOP集群部署
    SLICK基础
    函数式编程
  • 原文地址:https://www.cnblogs.com/stupid-chan/p/11351072.html
Copyright © 2011-2022 走看看