solving second exercise
This commit is contained in:
parent
391433d018
commit
f02a95659e
1 changed files with 39 additions and 0 deletions
|
@ -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))
|
||||
|
||||
```
|
Loading…
Reference in a new issue