1+ ### PILAS Y COLAS ###
2+ # Implementa los mecanismos de introducción y recuperación de elementos propios de las
3+ # pilas (stacks - LIFO) y las colas (queue - FIFO) utilizando una estructura de lista.
4+
5+ # PILAS - LIFO #
6+
7+ pila_list = ["Mario" , "Olga" , "Ana" ]
8+
9+ # introduce un elemento al final de la pila
10+ pila_list .append ("Harold" )
11+ print (pila_list )
12+
13+ # elimina el último elemento introducido y lo guarda en una variable
14+ eliminado_pila = pila_list .pop ()
15+ print (eliminado_pila )
16+
17+ # PILAS USANDO EL MÓDULO COLLETIONS
18+ from collections import deque # Módulo para manejar Pilas y Colas
19+
20+ pila = deque () # define la pila
21+
22+ # Agregar elementos a la pila
23+ pila .append ("ESDLA" )
24+ pila .append ("Harry Poter" )
25+ pila .append ("La Torre Oscura" )
26+ pila .append ("El Guardian Entre El Centeno" )
27+
28+ eliminado = pila .pop () # Elimina el ultimo elemento en ser agregado y lo guarda en una variable
29+
30+ print (f"\" { eliminado } \" ha sido eliminado de la pila." )
31+ print (pila )
32+
33+ # COLAS - FIFO #
34+
35+ cola_list = []
36+
37+ # Agregar elementos a la cola
38+ cola_list .append (10 )
39+ cola_list .append (20 )
40+ cola_list .append (30 )
41+ cola_list .append (40 )
42+ print (cola_list )
43+
44+ # elimina el primer elemento introducido y lo guarda en una variable
45+ eliminado_cola = cola_list .pop (0 )
46+
47+ print (f"{ eliminado_cola } ha sido eliminado de la cola" )
48+ print (cola_list )
49+
50+ # COLAS USANDO EL MÓDULO COLLETIONS
51+
52+ cola = deque () # define la cola
53+
54+ # Introducir elementos a la cola con el Método deque()
55+ cola .append (10 )
56+ cola .append (20 )
57+ cola .append (30 )
58+ cola .append (40 )
59+ print (cola )
60+
61+ # Eliminar elemento y guardarlo en una variable
62+ eliminado_cola = cola .popleft ()
63+ print (f"{ eliminado_cola } fue eliminado de la cola" )
64+ print (cola )
65+
66+ ### EXTRA ###
67+ # Utilizando la implementación de pila y cadenas de texto, simula el mecanismo adelante/atrás
68+ # de un navegador web. Crea un programa en el que puedas navegar a una página o indicarle
69+ # que te quieres desplazar adelante o atrás, mostrando en cada caso el nombre de la web.
70+ # Las palabras "adelante", "atrás" desencadenan esta acción, el resto se interpreta como
71+ # el nombre de una nueva web.
72+
73+ web_pila = []
74+ aux_pila = []
75+ permanecer = True
76+ menu = '''\n Elije una opción:
77+ # [i]ntroducir web
78+ # [a]trás
79+ # a[d]elante
80+ # [s]alir
81+ -> '''
82+
83+ def web ():
84+ direccion = input ("https://" )
85+ web_pila .append (direccion )
86+
87+ def atras ():
88+ if len (web_pila ) < 1 :
89+ pass
90+ else :
91+ borrado = web_pila .pop ()
92+ aux_pila .append (borrado )
93+
94+ def adelante ():
95+ if len (aux_pila ) < 1 :
96+ pass
97+ else :
98+ borrado = aux_pila .pop ()
99+ web_pila .append (borrado )
100+
101+ while permanecer :
102+ opcion = input (menu )
103+ match opcion :
104+ case "i" :
105+ web ()
106+ case "a" :
107+ atras ()
108+ case "d" :
109+ adelante ()
110+ case "s" :
111+ permanecer = False
112+ case _:
113+ print ("Elije un opción valida" )
114+ if len (web_pila ) > 0 :
115+ print (f"Estas en: { web_pila [- 1 ]} " )
116+
117+ print ("Saliendo..." )
118+
119+ '''Utilizando la implementación de cola y cadenas de texto, simula el mecanismo de una
120+ impresora compartida que recibe documentos y los imprime cuando así se le indica.
121+ La palabra "imprimir" imprime un elemento de la cola, el resto de palabras se
122+ interpretan como nombres de documentos.'''
123+
124+ cola_impresion = []
125+ continuo = True
126+
127+ def entrada_doc (documento ):
128+ cola_impresion .append (documento )
129+ print (f"El documento \" { documento } \" se ha agregado a la cola de impresión" )
130+
131+ def imprimir ():
132+ if len (cola_impresion ) > 0 :
133+ doc_salida = cola_impresion .pop (0 )
134+ print (f"Se está imprimiendo el documento \" { doc_salida } \" " )
135+ else :
136+ print ("La cola de impresión está vacía." )
137+
138+ while continuo :
139+ entrada = input ("Esperando entrada -> " )
140+
141+ if entrada == "imprimir" :
142+ imprimir ()
143+ elif entrada == "salir" :
144+ continuo = False
145+ print ("Saliendo..." )
146+ else :
147+ entrada_doc (entrada )
0 commit comments