Maison >Java >javaDidacticiel >Exemple d'analyse de l'implémentation Java de l'impression de listes chaînées de la fin au début
Cet article présente principalement la programmation Java pour implémenter l'impression d'exemples de code de liste chaînée de la fin au début. L'éditeur pense que c'est plutôt bien, je vais donc le partager avec vous ici pour référence des amis dans le besoin.
Description du problème : entrez le nœud principal d'une liste chaînée et imprimez la valeur de chaque nœud de la queue à la tête.
Définissez d'abord les nœuds de la liste chaînée
public class ListNode { int val; ListNode next = null; ListNode(int val){ this.val = val; } }
Idée 1 : Cette question utilise évidemment l'idée de stack, last in first Pour quitter, parcourez d'abord la liste chaînée et poussez les valeurs des nœuds dans la pile dans l'ordre. Enfin, ouvrez la pile après avoir parcouru la pile.
public static Stack<Integer> printListReverse_Stack(ListNode listNode){ Stack<Integer> stack = new Stack<Integer>(); if(listNode != null){ ListNode p = listNode; while(p != null){ stack.add(p.val); p = p.next; } } return stack; }
Idée 2 : Parcourez directement la liste chaînée et insérez l'ArrayList en séquence selon la méthode d'insertion de tête
public static ArrayList<Integer> printListFromTailToHead(ListNode listNode){//表头也存储元素 ArrayList<Integer> print = new ArrayList<Integer>(); if(listNode == null){ return print; } int add = 0; ListNode p = listNode; while(p != null){ print.add(0, p.val); p = p.next; } return print; }
Idée 3 : Vous pouvez utiliser l'idée de récursivité (essentiellement aussi l'idée de pile)
public ArrayList<Integer> printListReversely_Recursively(ListNode listNode){ ArrayList<Integer> print = new ArrayList<Integer>(); if(listNode == null){ return print; } print.addAll(printListReversely_Recursively(listNode.next)); print.add(listNode.val); return print; }
Résumé
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!