首页 > 编程 > Java > 正文

Java实现单向链表反转

2019-11-26 10:12:07
字体:
来源:转载
供稿:网友

本文实例为大家分享了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、实现思路

递归:从尾部开始处理

非递归:从头部开始处理

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表