자바 단 방향 링크 반전 실현

본 논문 의 사례 는 자바 가 단 방향 링크 반전 을 실현 하 는 구체 적 인 코드 를 공유 하여 여러분 께 참고 하 시기 바 랍 니 다.구체 적 인 내용 은 다음 과 같 습 니 다.
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.사고의 실현
귀속:끝부분 부터 처리

비 귀속:머리 부터 처리

이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기