Maison > Questions et réponses > le corps du texte
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
.大家讲道理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;
| | | | | | |
| | | | | | |
| | | | | | |
+----+ | +----+ +----+
| | | | | | |
| | | | | | |
+----+ | +-+--+ +----+
| |
+----+
过去多啦不再A梦2017-06-23 09:15:13
Ps : Il est recommandé d'en savoir plus sur les listes chaînées d'abord