• 技术文章 >Java >java教程

    Java单链表翻转实现的实例代码分享

    黄舟黄舟2017-03-25 10:34:44原创772
    Java实现单链表反转,递归和非递归两种形式。接下来通过本文给大家分享Java实现单链表翻转实例代码,需要的的朋友参考下

    Java实现单链表反转,递归和非递归两种形式

    /**
     * 反转单链表
     */
    
    /** * 定义链表
     * 
     * @author 16026
     *
     */
    class Node {
      int val;
      Node next;
      public Node(int val) {
        this.val = val;
      }
    }
    public class ReverseList {
      /**
       * 反转链表
       * 
       * @param head
       * @return
       */
      public static Node reverseList(Node head) {
        if (head == null || head.next == null) {
          return head;
        }
        Node reHead = null;// 定义新链表头结点
        while (head != null) {
          Node cur = head.next;// 记录下一个节点
          head.next = reHead;// 将rehead节点连接到head节点上
          reHead = head;// 让rehead指向head
          head = cur;// 将head指向下一个节点
        }
        return reHead;
      }
      /**
       * 递归反转链表
       * 
       * @param head
       * @return
       */
      public static Node reverseList2(Node head) {
        if (head == null || head.next == null)
          return head;
        Node rehead = reverseList2(head.next);
        head.next.next = head;// 将头节点置于末端
        head.next = null;// 防止链表循环
        return rehead;
      }
      /**
       * 打印链表
       * 
       * @param head
       */
      public static void printList(Node head) {
        if (head == null)
          return;
        while (head != null) {
          System.out.print(head.val + " ");
          head = head.next;
        }
      }
      /**
       * 测试
       * 
       * @param args
       */
      public static void main(String[] args) {
        Node n1 = new Node(1);
        Node n2 = new Node(2);
        Node n3 = new Node(3);
        Node n4 = new Node(4);
        Node n5 = new Node(5);
        n1.next = n2;
        n2.next = n3;
        n3.next = n4;
        n4.next = n5;
        // Node rehead = reverseList(n1);
        Node rehead = reverseList2(n1);
        printList(rehead);
      }
    }

    运行结果如下:

    以上就是Java单链表翻转实现的实例代码分享的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:Java中字符流与字节流的区别详细介绍 下一篇:详解介绍java虚拟机中对象访问(图)
    千万级数据并发解决方案

    相关文章推荐

    • java知识点详解之注解与元注解• 一起来分析java是值传递还是引用传递• 详细整理java枚举的使用总结• Java实例详解之子线程任务异常,主线程事务回滚• 一起聊聊Java常用数据类型的输入输出
    1/1

    PHP中文网