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

黄舟
黄舟original
2017-10-16 09:51:591391parcourir

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!

Déclaration:
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