java單向鏈表問題

定義一個單向鏈表

public class Node{
    int index;
    Node next;

    public Node(int index, Node next) {
        this.index = index;
        this.next = next;
    }

    public Node(int index) {
        this.index = index;
    }

    @Override
    public String toString() {
        return "Node{" +
                "index=" + index +
                ", next=" + next +
                '}';
    }
}

鏈表翻轉

public class Test{
    public static Node conver(Node node){
        Node pre = null;
        Node next = null;
        while (node != null) {
            next = node.next;
            node.next = pre;
            pre = node;
            node = next;
        }
        return pre;
    }

    public static void main(String[] args) {

        Node node4 = new Node(4);
        Node node3 = new Node(3,node4);
        Node node2 = new Node(2,node3);
        Node node1 = new Node(1,node2);
        System.out.println(node1);
        System.out.println(node2);
        System.out.println(node3);
        System.out.println(node4);
        conver(node1);
        System.out.println(node1);
        System.out.println(node2);
        System.out.println(node3);
        System.out.println(node4);
    }
}

結果

遞歸翻轉

public Node reverse2(Node node, Node prev) {
    if (node.next == null) {
      node.next = prev;
      return node;
    } else {
      Node re = reverse2(node.next, node);
      node.next = prev;
      return re;
    }
}
public Node reverse(Node node) {
    Node prev = null;
    Node now = node;
    while (now != null) {
      Node next = now.next;
      now.next = prev;
      prev = now;
      now = next;
    }

    return prev;
  }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章