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

Exemple d'analyse de l'implémentation Java de l'impression de listes chaînées de la fin au début

黄舟
Libérer: 2017-10-16 09:51:59
original
1393 Les gens l'ont consulté

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;
    }
  }
Copier après la connexion

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;
  }
Copier après la connexion

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;
  }
Copier après la connexion

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;
  }
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal