solving second exercise

This commit is contained in:
Gabriel Augendre 2015-01-21 11:15:24 +01:00
parent 391433d018
commit f02a95659e

View file

@ -59,6 +59,8 @@ def retirer_debut_file(file):
### Exercice 1 ### Exercice 1
Écrire un algo qui affiche les éléments d'une file en la conservant. É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 ```python
def affiche_file(f): def affiche_file(f):
f_temp = creer_file() f_temp = creer_file()
@ -70,4 +72,41 @@ def affiche_file(f):
f = f_temp f = f_temp
return f 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))
``` ```