Ce blog est relativement simple. Regardez simplement l'ordre inverse des listes liées uniques si vous ne comprenez pas.
Idée de commande inversée
Supposons maintenant qu'il existe une liste liée, qui doit être exploitée dans l'ordre inverse. La première chose à laquelle nous pensons est d'inverser la relation du pointeur.
En fait, c'est tout. Le blogueur est une seule opération de commande inverse liée à cet objectif.
Nœud pre = null; nœud post = null; while (head! = Null) {post = head.next; head.next = pré; pre = tête; tête = post;}C'est le cœur de l'ordre inverse. Expliquons étape par étape.
Au début, PRE et Post sont définis sur NULL. Ceci est nécessaire car après l'exécution de la ligne de code de head.next = pré, le prochain de notre nœud de tête d'origine deviendra nul, c'est-à-dire le null de toute notre liste liée.
Imaginez que le prochain à la fin de la liste des liens d'origine est également un nul? La vérité ici est la même.
À l'heure actuelle, la mise à jour de pré vers le nœud de tête d'origine est également de préparer la prochaine étape de l'ordre inverse, et la tête devient naturellement la tête d'origine.Next.
Désolé, ma main trembla et je me suis trompé. Merci à tous. La cinquième fois sur le diagramme dessiné à la main indique que le nœud pré-nœud doit être à la position du nœud 5 et qu'il n'y a pas de tête.
Il n'est pas difficile de voir dans la légende que nous déplaçons la tête vers l'arrière encore et encore, et mettons à jour le nœud avant en même temps pour réaliser l'effet de l'ordre inverse.
Code
Liste de packages; public class reverselist {public static void main (String [] args) {node head = new node (1); int [] value = {2,3,4,5}; node temp = head; for (int i = 0; i <value.length; i ++) {node node = new node (value [i]); temp.next = node; temp.Next;} printlist (tête); // inverse l'ordre de sortie une seule liste liée Head = Reverse (tête); printlist (tête); // inverser la tête à nouveau = reversingLelist (tête); printlist (tête);} public static vide printlist (nœud head) {while (head! = null) {system.out.print ("/ t" + head.value); head.next;} system.out.println ();} public static nœud reverse (nœud head) {nœud pre = null; nœud post = null; while (head! = null) {post = head.next; head.next = pre; pre = head; head = post;} return pre;} public static node inverseSingleList (nœud then null; while (head! = null) {next = head.next; head.next = pre; pre = head; head = next;} return pre;}} classe nœud {public int value; node public Next; public nœud (int value) {this.value = value;}}test
Après le test, la sortie du code est correcte.
1 2 3 4 5
5 4 3 2 1
1 2 3 4 5
Pour aider à comprendre, voici un autre exemple:
/ ** * Java implémente l'ordre inverse des listes liées uniques * @Author Administrator * * / public class singleLinkEdrevers {class node {int data; nœul NEXT; Node public (int data) {this.data = data;}} public static void main (string [] args) {singLelinder srr = news singLeLinDe SLR.NEW NODE (0); pour (int i = 1; i <10; i ++) {nœud p = slr.new nœud (i); tail.next = p; tail = p;} tail = head; while (tail! = null) {System.out.print (tail.data + ""); ");"); while (head! = null) {System.out.print (head.data + ""); head = head.next;}} nœud statique privé Reverse (nœud head) {nœud p1, p2 = null; p1 = head.nex p2;}}Résultats des tests:
0 1 2 3 4 5 6 7 8 9
9 8 7 6 5 4 3 2 1 0
Résumer
Ce qui précède est l'intégralité du contenu de cet article sur l'exemple de code de l'utilisation de l'ordre inverse des listes liées uniquement Java. J'espère que ce sera utile à tout le monde. Les amis intéressés peuvent continuer à se référer à d'autres sujets connexes sur ce site. S'il y a des lacunes, veuillez laisser un message pour le signaler. Merci vos amis pour votre soutien pour ce site!