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
|
### 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()
|
||||||
|
@ -71,3 +73,40 @@ 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))
|
||||||
|
|
||||||
|
```
|
Loading…
Reference in a new issue