Maison  >  Questions et réponses  >  le corps du texte

Structure des données - Comment la liste chaînée inversée Java est-elle implémentée ?

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;


    }

Comment ce code s'inverse-t-il dans la boucle while ? Je veux être plus détaillé. Je l'ai débogué plusieurs fois et je n'arrive toujours pas à comprendre ce qui se passe

.
習慣沉默習慣沉默2675 Il y a quelques jours836

répondre à tous(2)je répondrai

  • 大家讲道理

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

    Il sera plus facile de comprendre le but si vous vous y référez. Le plus déroutant est de le traiter de droite à gauche, car vous devez d'abord sauvegarder les éléments à l'arrière, sinon ils seront écrasés et perdus.

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

    répondre
    0
  • 过去多啦不再A梦

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

    Ps : Il est recommandé d'en savoir plus sur les listes chaînées d'abord

    répondre
    0
  • Annulerrépondre