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