Java实现单向链表反转

 更新时间:2018年03月10日 14:23:11   作者:hanxue1122   我要评论

这篇文章主要为大家详细介绍了Java实现单向链表反转,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了Java实现单向链表反转的具体代码,供大家参考,具体内容如下

1、实现代码

public class LinkedListTest {
  public static void main(String[] args) {
    Node A = new Node("A");
    Node B = new Node("B");
    Node C = new Node("C");
    Node D = new Node("D");
    Node E = new Node("E");
    Node F = new Node("F");
    A.next = B;
    B.next = C;
    C.next = D;
    D.next = E;
    E.next = F;
    print(A);
    LinkedListReversor reversor = LinkedListReversor.RECURSION;
    System.out.println(reversor.getStrategy() + ":");
    Node tmp = reversor.execute(A);
    print(tmp);
    reversor = LinkedListReversor.NO_RECURSION;
    System.out.println(reversor.getStrategy() + ":");
    print(reversor.execute(tmp));
  }
  private static void print(Node node) {
    while (node != null) {
      System.out.print(node.value);
      node = node.next;
      if (node != null) {
        System.out.print("->");
      } else {
        System.out.println();
      }
    }
  }
}
class Node {
  public String value;
  public Node next;
  public Node(String value) {
    this.value = value;
  }
}
enum LinkedListReversor {
  RECURSION("递归") {
    @Override
    public Node execute(Node node) {
      Node prev = null;
      if (node == null || node.next == null) {
        prev = node;
      } else {
        Node tmp = execute(node.next);
        node.next.next = node;
        node.next = null;
        prev = tmp;
      }
      return prev;
    }
  },
  NO_RECURSION("非递归") {
    @Override
    public Node execute(Node node) {
      Node prev = null;
      while (node != null) {
        Node tmp = node;
        node = node.next;
        tmp.next = prev;
        prev = tmp;
      }
      return prev;
    }
  };
  private String strategy;
  private LinkedListReversor(String strategy) {
    this.strategy = strategy;
  }
  public abstract Node execute(Node node);
  public String getStrategy() {
    return strategy;
  }
}

2、实现思路

递归:从尾部开始处理

非递归:从头部开始处理

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持澳门金沙网上娱乐。

相关文章

最新评论