软件编程
位置:首页>> 软件编程>> java编程>> Java实现单向链表反转

Java实现单向链表反转

作者:hanxue1122  发布时间:2023-11-18 01:03:11 

标签: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、实现思路

递归:从尾部开始处理

Java实现单向链表反转

非递归:从头部开始处理

Java实现单向链表反转

来源:https://www.cnblogs.com/hanxue112253/p/8533426.html

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com