Piles et files
Lycée Blaise Pascal
Septembre 2015
1 / 23
Les Piles
Les piles apparaissent tôt dans le monde de l’informatique en
permettant une description théorique et une modélisation du
fonctionnement des ordinateurs.
2 / 23
Les Piles
"Stack overflow"
3 / 23
Les Piles
Définition
Une pile (en anglais a stack) est une structure de données reposant
sur le principe de "dernier arrivé, premier sorti".
On parle également de mode LIFO : Last In, First Out.
4 / 23
Les Piles
5 / 23
Les fonctions de base
Pour utiliser une pile, il suffit de savoir :
ICréer une pile (initialement vide)
IEmpiler un élément (en anglais push)
IDépiler un élément (en anglais pop)
6 / 23
Les fonctions presque de base
On peut compléter ces fonctions de base par d’autres :
ITester si la pile est vide
IDemander le sommet de la pile, sans le retirer de celle-ci
IAfficher la pile
7 / 23
Et en Python ?
Nous créons sous Python une structure de pile à l’aide des listes.
Ici, le sommet de la pile est le dernier élément.
def cr ee r_p ile () :
return []
def em pile (a , p) :
p. append (a)
def depile (p):
return p. pop ()
8 / 23
Et en Python ?
Le sommet de la pile est le dernier élément.
def est_vide ( p):
return( p ==[])
def sommet (p):
return p [ -1]
Remarque
L’accès à un élément d’une liste Python étant en O(1), les
fonctions ci-dessus sont également en O(1).
9 / 23
Capacité d’une pile
Dans l’implémentation d’une pile, on distinguera deux cas :
ILes piles à capacité non bornée :
Il n’y a pas de limite (autre que celle de l’ordinateur lui-même)
au nombre d’objets empilables.
ILes piles à capacité bornée :
La taille de la pile est bornée à l’initialisation.
10 / 23
Exemple d’utilisation
>>> p= cree r_p ile
>>> p= cree r_p ile ()
>> > em pil e (3 , p )
>> > em pil e (5 , p )
>>> p
[3 , 5]
>>> depile(p)
5
>>> a= depile (p)
>>> a
3
>>> depile(p)
Inde xEr ror : pop from empty list
11 / 23
Un peu de POO
Telle que nous l’avons créée, une pile est une liste. . .
Et on pourrait alors tricher. . .
Nous allons construire un objet de type Pile :
12 / 23
Un peu de POO
class Pile:
def __init__ ( self ):
# Initialisation d’une pile
self . liste = []
def __repr__ ( self ):
Aff = ’ Ha ut \ n ’
longueur = len ( self . liste )
i=0
while i < lon gueur :
Aff = Aff + str ( self . liste [i ]) + \n
i += 1
Aff = Aff + ’ Bas \ n - -- -- ’
return Aff
13 / 23
Un peu de POO
def em pile ( self , a) :
self . liste . insert (0 ,a)
def est Vide ( self ) :
return len( self . liste ) == 0
def sommet ( self ) :
assert not( sel f . e stV ide () ) , La pile est
vide : pas de sommet
return self . liste [0]
def depile ( self ) :
assert not( sel f . e stV ide () ) , La pile est
vide : on ne peut pas la d é piler
return self . liste . pop (0)
14 / 23
Un peu de POO
>>> p= Pile ()
>>> p. empile (3)
>>> p. empile (5)
>>> print (p)
Haut
5
3
Bas
---- -
>>> p. depile ()
5
>>> p. estVide ()
False
15 / 23
Les Files
Définition
Une file (en anglais a queue) est une structure de données reposant
sur le principe de "premier arrivé, premier sorti".
On parle également de mode FIFO : First In, First Out.
16 / 23
Les Files
C’est le principe d’une file d’attente. . .
17 / 23
Les fonctions de base
Pour utiliser une file, il suffit de savoir :
ICréer une file (initialement vide)
IEmfiler un élément (en anglais enqueue)
IDéfiler un élément (en anglais dequeue)
I. . .
18 / 23
En Python
def cr ee r_f ile () :
return []
def en file (a , f) :
f. append (a)
def defile (f):
return f. pop (0)
19 / 23
double-ended queue
Dans le module collections, on trouve la classe deque
spécialement conçue pour ajouter et extraire des éléments à droite
et à gauche, de façon plus efficace qu’avec une liste.
On pourra consulter la documentation officielle :
Python » Documentation » The Python Standard Library
» 8.3 collections » 8.3.3 deque objects
https://docs.python.org/3/library/collections.html#
module-collections
20 / 23
1 / 6 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !