Stack - Il s'agit d'un conteneur de stockage qui prend en charge la récupération par ordre du dernier entré, premier sorti (LIFO). Les piles sont probablement le bon conteneur à utiliser lorsque l’ordre de récupération n’a aucune importance, par exemple lors du traitement de tâches par lots.
Par exemple, considérons une pile d'assiettes utilisée dans les cafétérias : l'ordre dans lequel les assiettes sont retirées de la pile est l'inverse de l'ordre dans lequel elles ont été ajoutées, car seule l'assiette supérieure est accessible .
L'opération INSERT sur une pile est souvent appelée PUSH, et l'opération DELETE, qui ne prend pas d'argument d'élément, est souvent appelée POP.
Push (x,s) : Insérez l'élément x en haut de la pile s.
Pop(s) : Renvoie (et supprime) l'élément supérieur de la pile s.
Les aliments insérés dans mon réfrigérateur sortent généralement de la même manière, malgré l'incitation des dates de péremption. Sur le plan algorithmique, LIFO a tendance à se produire au cours de l'exécution d'algorithmes récursifs.
Applications de Stack -
Implémenter la pile à l'aide d'un tableau -
class Stack: def __init__(self): #Initializes an empty stack self.stack = [] def isEmpty(self) -> bool: #Returns True if the stack is empty, False otherwise. return len(self.stack) == 0 def push(self, item) -> None: #Pushes an item onto the stack. self.stack.append(item) def pop(self): #Removes and returns the top item from the stack. if self.isEmpty(): return None return self.stack.pop() def peek(self): #Returns the top item from the stack without removing it. if self.isEmpty(): return None return self.stack[-1]
File d'attente - Il s'agit d'un conteneur de stockage qui prend en charge la récupération par ordre premier entré, premier sorti (FIFO). Nous appelons l'opération INSERT sur une file d'attente ENQUEUE, et nous appelons l'opération DELETE DEQUEUE. Comme l'opération de pile POP, DEQUEUE ne prend aucun argument d'élément. Les piles et les files d'attente sont des ensembles dynamiques dans lesquels l'élément supprimé de l'ensemble par l'opération DELETE est prédéfini.
Enqueue(x,q): Insérez l'élément x à la fin de la file d'attente q.
Dequeue(q): Renvoie (et supprime) l'élément de premier plan de la file d'attente q.
La file d'attente a une tête et une queue.
Lorsqu'un élément est mis en file d'attente, il prend sa place en queue de file, tout comme un client nouvellement arrivé prend place en fin de file.
L'élément sorti de la file d'attente est toujours celui en tête de file, comme le client en tête de file, qui a attendu le plus longtemps.
Applications de file d'attente -
Implémenter la file d'attente à l'aide d'un tableau-
class Stack: def __init__(self): #Initializes an empty stack self.stack = [] def isEmpty(self) -> bool: #Returns True if the stack is empty, False otherwise. return len(self.stack) == 0 def push(self, item) -> None: #Pushes an item onto the stack. self.stack.append(item) def pop(self): #Removes and returns the top item from the stack. if self.isEmpty(): return None return self.stack.pop() def peek(self): #Returns the top item from the stack without removing it. if self.isEmpty(): return None return self.stack[-1]
Implémenter la file d'attente à l'aide de Stacks -
class MyQueue: def __init__(self): # Store elements self.queue = [] # A pointer to indicate the start position self.p_start = 0 def enQueue(self, x): #Insert an element into the queue. self.queue.append(x) return True # Return True if the operation is successful def deQueue(self): #Delete an element from the queue. if self.isEmpty(): return False self.p_start += 1 return True #Return True if the operation is successful def Front(self): #Get the front item from the queue. if not self.isEmpty(): return self.queue[self.p_start] return None # Return None if the queue is empty def isEmpty(self): #Checks whether the queue is empty or not return self.p_start >= len(self.queue)
Implémenter la pile à l'aide de files d'attente -
class MyQueue: def __init__(self): self.stack_1 = [] # Main stack for enqueue operations self.stack_2 = [] # Temporary stack for dequeue operations self.front = None # Pushes element x to the back of the queue. def push(self, x): # Move all elements from stack1 to stack 2 to reverse their order while self.stack_1: self.stack_2.append(self.stack_1.pop()) self.stack_2.append(x) # Move all elements back from stack2 to stack 1 as a queue while self.stack_2: self.stack_1.append(self.stack_2.pop()) # Removes the element from the front of the queue and returns it def pop(self): return self.stack_1.pop() # Returns the element at the front of the queue def peek(self): return self.stack_1[-1] # Returns true if the queue is empty, false otherwise def empty(self): return not self.stack_1
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!