1
+ '''
2
+ /*
3
+ * EJERCICIO:
4
+ * Implementa los mecanismos de introducción y recuperación de elementos propios de las
5
+ * pilas (stacks - LIFO) y las colas (queue - FIFO) utilizando una estructura de array
6
+ * o lista (dependiendo de las posibilidades de tu lenguaje).
7
+ *
8
+ * DIFICULTAD EXTRA (opcional):
9
+ * - Utilizando la implementación de pila y cadenas de texto, simula el mecanismo adelante/atrás
10
+ * de un navegador web. Crea un programa en el que puedas navegar a una página o indicarle
11
+ * que te quieres desplazar adelante o atrás, mostrando en cada caso el nombre de la web.
12
+ * Las palabras "adelante", "atrás" desencadenan esta acción, el resto se interpreta como
13
+ * el nombre de una nueva web.
14
+ * - Utilizando la implementación de cola y cadenas de texto, simula el mecanismo de una
15
+ * impresora compartida que recibe documentos y los imprime cuando así se le indica.
16
+ * La palabra "imprimir" imprime un elemento de la cola, el resto de palabras se
17
+ * interpretan como nombres de documentos.
18
+ */
19
+ '''
20
+
21
+ ### Pila/Stack (LIFO)
22
+ ## List in Python is a stack
23
+ stack = []
24
+ stack .append ("1" ) # push
25
+ stack .append ("2" ) # push
26
+ stack .append ("3" ) # push
27
+ print (stack )
28
+ element = stack .pop () # pop
29
+ print (element )
30
+ print (stack )
31
+
32
+ ### Cola/Queue (FIFO)
33
+ queue = []
34
+ #enqueue
35
+ queue .append ("1" )
36
+ queue .append ("2" )
37
+ queue .append ("3" )
38
+ print (queue )
39
+ #dequeue
40
+ element = queue .pop (0 )
41
+ print (element )
42
+ print (queue )
43
+
44
+ ## EXTRA
45
+ ### EXTRA 1
46
+
47
+ def web_navegation ():
48
+
49
+ stack = []
50
+
51
+ while True :
52
+
53
+ action = input (
54
+ "Añade una url o interactúa con palabras adelante/atrás/salir: "
55
+ )
56
+
57
+ if action == 'salir' :
58
+ print ('Saliendo del navegador web.' )
59
+ break
60
+ elif action == 'adelante' : # El stack no podemos hacer
61
+ pass
62
+ elif action == "atrás" :
63
+ if len (stack ) > 0 :
64
+ stack .pop ()
65
+ else :
66
+ stack .append (action )
67
+
68
+ if len (stack ) > 0 :
69
+ print (f"Has navegado a la web: { stack [len (stack ) - 1 ]} " )
70
+ else :
71
+ print ("Estás en la página de inicio." )
72
+
73
+ #web_navegation()
74
+
75
+ ### EXTRA 2
76
+ def online_printer ():
77
+ queue = []
78
+
79
+ while True :
80
+ action = input ("Añade documento o selecciona imprimir/salir: " )
81
+
82
+ if action == "imprimir" :
83
+ if len (queue ) > 0 :
84
+ print (f"Imprimiendo documento '{ queue .pop (0 )} '" )
85
+ else :
86
+ print ("No hay documento en cola." )
87
+ elif action == "salir" :
88
+ print ("Apagando la impresora LOL!!!" )
89
+ break
90
+ else :
91
+ queue .append (action )
92
+
93
+ print (f"Cola de Impresora { queue } " )
94
+
95
+ online_printer ()
0 commit comments