PrepaMaths mesure son audience de façon anonyme, sans cookie. Acceptes-tu les cookies d'analyse pour nous aider à améliorer l'app ? En savoir plus

Vidéo Premium
Débloquer avec Premium5:00
Une pile est une structure de données où l'on insère et retire les éléments par le sommet uniquement.
Opérations :
empiler(x) (push) : ajouter au sommetdepiler() (pop) : retirer et renvoyer l'élément au sommetest_vide() : tester si la pile est videsommet() : consulter le sommet sans le retirerToutes ces opérations sont en .
class Pile:
def __init__(self):
self.elements = []
def est_vide(self):
return len(self.elements) == 0
def empiler(self, x):
self.elements.append(x)
def depiler(self):
assert not self.est_vide(), "Pile vide"
return self.elements.pop()
def sommet(self):
assert not self.est_vide(), "Pile vide"
return self.elements[-1]def parenthesage_correct(expression):
"""Vérifie que les parenthèses sont bien appariées."""
pile = Pile()
corresp = {')': '(', ']': '[', '}': '{'}
for c in expression:
if c in '([{':
pile.empiler(c)
elif c in ')]}':
if pile.est_vide() or pile.depiler() != corresp[c]:
return False
return pile.est_vide()Une file est une structure où l'on insère par un bout (enfiler) et l'on retire par l'autre (défiler).
from collections import deque
class File:
def __init__(self):
self.elements = deque()
def est_vide(self):
return len(self.elements) == 0
def enfiler(self, x):
self.elements.append(x)
def defiler(self):
assert not self.est_vide(), "File vide"
return self.elements.popleft()Remarque. On utilise
collections.dequeplutôt qu'une liste carpopleft()est en pour un deque, contre pour une liste.
collections.deque plutôt qu'une liste pour implémenter une file en Python ?deque (double-ended queue), popleft() est en .Les files sont utilisées dans le parcours en largeur des graphes et des arbres.
def parcours_largeur(graphe, depart):
"""Parcours en largeur d'un graphe représenté par listes d'adjacence."""
visites = set()
file = deque([depart])
visites.add(depart)
while file:
sommet = file.popleft()
print(sommet)
for voisin in graphe[sommet]:
if voisin not in visites:
visites.add(voisin)
file.append(voisin)Une file de priorité est une structure où l'on peut insérer des éléments avec une priorité et extraire l'élément de priorité minimale.
import heapq
tas = []
heapq.heappush(tas, 5)
heapq.heappush(tas, 2)
heapq.heappush(tas, 8)
heapq.heappop(tas) # 2 (le minimum)Les opérations d'insertion et d'extraction sont en .