diff --git a/algo_avancee/files.md b/algo_avancee/files.md index 8f70803..05d5155 100644 --- a/algo_avancee/files.md +++ b/algo_avancee/files.md @@ -59,6 +59,8 @@ def retirer_debut_file(file): ### Exercice 1 Écrire un algo qui affiche les éléments d'une file en la conservant. +#### 1ère solution +Ici on passe par une autre file : On défile chaque élément pour le mettre dans l'autre file, on affiche chaque élément défilé, puis on change la référence de la file. ```python def affiche_file(f): f_temp = creer_file() @@ -70,4 +72,41 @@ def affiche_file(f): f = f_temp return f +``` + +#### 2ème solution +Cette solution est dite "en place", parce qu'on n'a pas besoin d'une file supplémentaire. On défile chaque élément pour le rajouter à la fin de la file. +On définit préalablement un maillon qui indiquera la fin de la file pour ne pas répéter indéfiniment. +```python +def afficher_file(f): + """ + On définit une str "***" qui marque la fin de la file. + La file ne doit pas contenir cet élément. + """ + fin_file = "***" + ajouter_fin_file(f, fin_file) + + while (debut_file != fin_file): + print(debut_file(f)) + ajouter_fin_file(f, debut_file(f)) + retirer_debut_file(f) + + retirer_debut_file(f) # On retire le marqueur de fin. +``` + +### Exercice 2 +Écrire une fonction récursive de recherche dans une file non triée. + +#### 1ère solution +Ici la file est modifiée, tous les éléments précédant l'élément recherché sont supprimés. +```python +def rech_recursive(f, elt): + if file_vide(f): + return False + if debut_file(f) == elt: + return True + + retirer_debut_file(f) + return(rech_recursive(f, elt)) + ``` \ No newline at end of file