Contenu du cours
Aperçu des Algorithmes et des Structures de Données
Aperçu des Algorithmes et des Structures de Données
Piles
Une structure de données pile est une structure de données dite LIFO (Last In, First Out). Cela signifie que le dernier élément inséré dans la pile sera le premier élément retiré. Et, bien sûr, il est très important que nous puissions accéder uniquement au dernier élément d'une structure de données exclusivement lorsqu'il s'agit de la pile.
Implémentation de la pile
import numpy as np class Stack: def __init__(self): self.stack = np.array([]) # Initialize an empty NumPy array def push(self, item): self.stack = np.append(self.stack, item) # Append the item to the end of the array def pop(self): if self.is_empty(): print("Stack is empty.") # Handle empty stack case gracefully return None # Return None if the stack is empty return_value = self.stack[-1] # Store the value to return self.stack = np.delete(self.stack, -1) # Remove the last item from the array return return_value # Return the removed item def is_empty(self): return self.stack.size == 0 # Check if the stack is empty # Example usage: stack = Stack() stack.push(1) stack.push(2) stack.push(3) print("Stack:", stack.stack) print("Pop:", stack.pop()) print("Stack after pop:", stack.stack) # Attempt to pop from an empty stack stack.pop() stack.pop() print("Pop from empty stack:", stack.pop()) # Should print 'Stack is empty.'
Il est important de se rappeler qu'une pile est un type de données abstrait. Cela signifie qu'il définit uniquement le comportement mais pas une implémentation concrète. Le type de données abstrait de la pile peut être implémenté soit avec l'aide de la structure de données tableau ou liste chaînée.
Habituellement, dans les implémentations concrètes de la pile, deux méthodes de base sont utilisées :
push()
- insère un élément dans une pile;pop()
- retire le dernier élément inséré d'une pile.
Complexité temporelle des opérations de base
Merci pour vos commentaires !