Comment Traverse récursive dans une liste chaînée

June 11

La structure de données de liste chaînée est une alternative puissante aux tableaux simples. Contrairement à des tableaux, les données peuvent être rapidement ajoutés et retirés à partir d'une liste liée sans recréer la liste un élément à la fois. Cependant, contrairement aux tableaux, les données dans une liste chaînée ne sont accessibles que dans l'ordre. Vous pouvez faire cela avec une simple boucle ou avec une fonction récursive (ou auto-appel). Ce sera écrit en Java, mais le code peut être mis en œuvre dans toutes les langues, avec seulement des modifications mineures pour répondre aux différences de syntaxe.

Instructions

1 Ouvrez un éditeur de texte.

2 Collez le code Java suivant:

public class RecursiveLLTraverser {

public static void traverseList(LinkedList l) {

}

}

Tout le code ira dans la méthode "de traverseList".

3 Collez le texte suivant dans la méthode "traverseList":

if (l.size () == 0) return;

if (l.size () 0>) {

LinkedList n = l.clone();

Object o = n.removeFirst ();

o.doSomething ();

traverseList (n);

}

Cela prend une liste chaînée et fait un clone peu profonde de celui-ci avec le premier élément retiré (et certains traitements effectués sur elle.) Ce clone est ensuite exécuté à travers la liste de traverse lui-même. Finalement, le clone sera vide, dans ce cas, la méthode de la liste traversée retournera simplement.

Conseils et avertissements

  • Tous les algorithmes récursifs nécessitent au moins deux cas: un cas de base, qui doit revenir, et un cas récursif, ce qui réduit la taille des données à quelque chose de plus facile à gérer. Un bug commun dans les méthodes récursives oublie le cas de base. Cela provoque une boucle infinie qui se bloque finalement lorsque l'ordinateur manque d'espace de pile.
  • méthodes récursives dépendent d'un réglage du système appelé "taille de la pile" qui change avec le système d'exploitation et la langue. Cette section de la mémoire conserve la trace de toutes les méthodes en cours d'exécution. Tenter un algorithme récursif sur une liste extrêmement importante peut produire des erreurs de pile.

          

Post a comment: