-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathstack_based_queue.py
More file actions
28 lines (24 loc) · 1.18 KB
/
stack_based_queue.py
File metadata and controls
28 lines (24 loc) · 1.18 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# Clase para Queue basado en dos Stacks que a su vez van a estar basados en listas
class Queue:
# Metodo constructor:
def __init__(self):
# Primer stack basado en listas:
self.inbound_stack: list = []
self.obtbound_stack: list = []
# Metodo para agregar datos:
def enqueue(self, data):
self.inbound_stack.append(data)
# Metodo para remover data de nuestros stacks
def dequeue(self):
# Proceso: los elementos que entraron a inbound stack los vamos a
# pasar a outbound stack. Pero respetando el principio de los queues
# Si nuestro outbound stack no está vacio:
if not self.obtbound_stack:
# Mientras self.inbound_stack tenga elementos:
while self.inbound_stack:
# Va a ir recibiendo el ultimo elemento del stack:
self.obtbound_stack.append(self.inbound_stack.pop())
# Por ultimo queremos que nos retorne aquellos datos que se están extrayendo:
return self.obtbound_stack.pop()
# Una vez que del inbound stack pase todos los elementos al outbound stack le
# voy a hacer pop para que retorne el elemento expulsado.