1
+ """ /*
2
+ * EJERCICIO:
3
+ * Implementa los mecanismos de introducción y recuperación de elementos propios de las
4
+ * pilas (stacks - LIFO) y las colas (queue - FIFO) utilizando una estructura de array
5
+ * o lista (dependiendo de las posibilidades de tu lenguaje).
6
+ *
7
+ * DIFICULTAD EXTRA (opcional):
8
+ * - Utilizando la implementación de pila y cadenas de texto, simula el mecanismo adelante/atrás
9
+ * de un navegador web. Crea un programa en el que puedas navegar a una página o indicarle
10
+ * que te quieres desplazar adelante o atrás, mostrando en cada caso el nombre de la web.
11
+ * Las palabras "adelante", "atrás" desencadenan esta acción, el resto se interpreta como
12
+ * el nombre de una nueva web.
13
+ * - Utilizando la implementación de cola y cadenas de texto, simula el mecanismo de una
14
+ * impresora compartida que recibe documentos y los imprime cuando así se le indica.
15
+ * La palabra "imprimir" imprime un elemento de la cola, el resto de palabras se
16
+ * interpretan como nombres de documentos.
17
+ */ """
18
+
19
+ #EJERCICIO
20
+
21
+ #Pila/Stack (LIFO - Last In First Out)
22
+
23
+ stack = []
24
+ stack .append ("1" ) #Push
25
+ stack .append ("2" ) #Push
26
+ stack .append ("3" ) #Push
27
+ print (stack )
28
+
29
+ """ stack_item = stack[len(stack) -1] #Pop
30
+ del stack[len(stack) -1]
31
+ print(stack_item) """
32
+
33
+ print (stack .pop ())
34
+
35
+ print (stack )
36
+
37
+ #Cola/Queue (FIFO - First In First Out)
38
+ """
39
+ queue = []
40
+ queue.append(1) #Enqueue
41
+ queue.append(2) #Enqueue
42
+ queue.append(3) #Enqueue
43
+ print(queue)
44
+
45
+ queue_item = queue[0] #Dequeue
46
+ del queue[0]
47
+ print(queue_item)
48
+
49
+ print(queue.pop(0)) #Dequeue
50
+
51
+ print(queue) """
52
+
53
+ #DIFICULTAD EXTRA
54
+
55
+ # Navegador
56
+
57
+ nav = []
58
+
59
+ nav .append ("Web 1" )
60
+ nav .append ("Web 1/Web 2" )
61
+ nav .append ("Web 1/Web 2/Web 3" )
62
+
63
+ position = 0
64
+
65
+ def forward ():
66
+ nav [position ]
67
+
68
+
69
+ def backward ():
70
+ nav [position ]
71
+
72
+
73
+ while True :
74
+
75
+ print ("Actualmente estás en: " , nav [position ])
76
+ question = input ("¿Qué quieres añadir una web, ir hacia adelante, ir hacia atrás o salir: " )
77
+
78
+ if question .lower () == "adelante" or question .lower () == "ir hacia adelante" :
79
+ position += 1
80
+ forward ()
81
+ elif question .lower () == "atrás" or question .lower () == "atras" or question .lower () == "ir hacia atrás" or question .lower () == "ir hacia atras" :
82
+ position -= 1
83
+ backward ()
84
+ elif question .lower () == "añadir" :
85
+ nav .append (input ("Añade la web:" ))
86
+ elif question .lower () == "salir" :
87
+ break
88
+ else :
89
+ print ("La opción seleccionada es incorrecta, elija adelante o atrás." )
90
+
91
+ # Impresora
92
+
93
+ queue_printer = []
94
+
95
+ def add_paper ():
96
+ queue_printer .append (input ("Nombre del documento que quiere añadir a la cola para imprimir: " ))
97
+
98
+ def print_paper ():
99
+ print ("Se está imprimiendo: " , queue_printer .pop (0 ))
100
+
101
+ while True :
102
+ quest = input ("¿Quieres añadir un documento a la cola de impresión, imprimir o salir?: " )
103
+
104
+ if quest .lower () == "añadir" or quest .lower () == "añadir un documento a la cola de impresión" :
105
+ add_paper ()
106
+ print ("La cola de impresión es: " , queue_printer )
107
+ elif quest .lower () == "imprimir" :
108
+
109
+ print_paper ()
110
+ print ("La cola de impresión es: " , queue_printer )
111
+ elif quest .lower () == "salir" :
112
+ break
113
+ else :
114
+ print ("La opción seleccionada es incorrecta, elija añadir, imprimir o salir." )
0 commit comments