suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Datenstruktur – Wie wird eine umgedrehte verknüpfte Java-Liste implementiert?

public class Node {
    public int value;
    public Node next;

    public Node(int data) {
        this.value = data;
    }


    public Node reverse(Node head) {
        Node pre = null;
        Node next = null;

        while (head != null) {
            next = head.next;
            head.next = pre;
            pre = head;
            head = next;

        }
        return pre;


    }

Wie dreht sich dieser Code in der while-Schleife? Ich habe ihn mehrmals debuggt und kann immer noch nicht herausfinden, was los ist

習慣沉默習慣沉默2740 Tage vor885

Antworte allen(2)Ich werde antworten

  • 大家讲道理

    大家讲道理2017-06-23 09:15:13

    参考一下,理解目的就比较好理解了。容易混乱的地方就是从右往左来处理,因为得先把后面的东西存起来,不然被覆盖掉就丢了。

     pre        head       
    +----+     +----+  +> +----+
    |    |     |    |  |  |    |
    |    |     |    |  |  |    |
    |    |     |    |  |  |    |
    +----+     +----+  |  +----+
    |    |     |    |  |  |    |
    |    |     |    |  |  |    |
    +----+     +-+--+  |  +----+
                 |     |
                 +-----+
    
     pre        head       next        next = head.next;
    +----+     +----+  +> +----+
    |    |     |    |  |  |    |
    |    |     |    |  |  |    |
    |    |     |    |  |  |    |
    +----+     +----+  |  +----+
    |    |     |    |  |  |    |
    |    |     |    |  |  |    |
    +----+     +-+--+  |  +----+
                 |     |
                 +-----+
    
     pre        head       next
    +----+ <+  +----+     +----+
    |    |  |  |    |     |    |
    |    |  |  |    |     |    |
    |    |  |  |    |     |    |
    +----+  |  +----+     +----+
    |    |  |  |    |     |    |
    |    |  |  |    |     |    |
    +----+  |  +-+--+     +----+
            |    |                     head.next = pre;
            +----+
                           next
                pre        head        pre = head;
    +----+ <+  +----+     +----+       head = next;
    |    |  |  |    |     |    |
    |    |  |  |    |     |    |
    |    |  |  |    |     |    |
    +----+  |  +----+     +----+
    |    |  |  |    |     |    |
    |    |  |  |    |     |    |
    +----+  |  +-+--+     +----+
            |    |
            +----+
    

    Antwort
    0
  • 过去多啦不再A梦

    过去多啦不再A梦2017-06-23 09:15:13

    Ps:建议先多了解一下链表

    Antwort
    0
  • StornierenAntwort