1
+ '''EJERCICIO:
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 array
4
+ o lista (dependiendo de las posibilidades de tu lenguaje).
5
+
6
+ DIFICULTAD EXTRA (opcional):
7
+ - Utilizando la implementación de pila y cadenas de texto, simula el mecanismo adelante/atrás
8
+ de un navegador web. Crea un programa en el que puedas navegar a una página o indicarle
9
+ que te quieres desplazar adelante o atrás, mostrando en cada caso el nombre de la web.
10
+ Las palabras "adelante", "atrás" desencadenan esta acción, el resto se interpreta como
11
+ el nombre de una nueva web.
12
+ - Utilizando la implementación de cola y cadenas de texto, simula el mecanismo de una
13
+ impresora compartida que recibe documentos y los imprime cuando así se le indica.
14
+ La palabra "imprimir" imprime un elemento de la cola, el resto de palabras se
15
+ interpretan como nombres de documentos.'''
16
+
17
+ # Implementación de pilas y colas en Python
18
+ # Pilas/stack: LIFO (Last In, First Out)
19
+ pila = []
20
+ # push: añadir un elemento a la pila
21
+ pila .append (1 )
22
+ pila .append (2 )
23
+ pila .append (3 )
24
+ pila .append (4 )
25
+ pila .append (5 )
26
+ print (pila )
27
+ # pop: eliminar un elemento de la pila
28
+ pila .pop ()
29
+ print (pila )
30
+ print (pila .pop ()) # este método devuelve el elemento eliminado
31
+ print (pila )
32
+ print (pila .pop ())
33
+ print (pila )
34
+
35
+ # Colas/queue: FIFO (First In, First Out)
36
+ cola = []
37
+ # enqueue: añadir un elemento a la cola
38
+ cola .append (1 )
39
+ cola .append (2 )
40
+ cola .append (3 )
41
+ cola .append (4 )
42
+ cola .append (5 )
43
+ print (cola )
44
+ # dequeue: eliminar un elemento de la cola
45
+ cola .pop (0 ) # pop(0) elimina el primer elemento de la lista
46
+ print (cola )
47
+ print (cola .pop (0 )) # este método devuelve el elemento eliminado
48
+ print (cola )
49
+
50
+ # EXTRA
51
+ '''- Utilizando la implementación de pila y cadenas de texto, simula el mecanismo adelante/atrás
52
+ de un navegador web. Crea un programa en el que puedas navegar a una página o indicarle
53
+ que te quieres desplazar adelante o atrás, mostrando en cada caso el nombre de la web.
54
+ Las palabras "adelante", "atrás" desencadenan esta acción, el resto se interpreta como
55
+ el nombre de una nueva web.
56
+ - Utilizando la implementación de cola y cadenas de texto, simula el mecanismo de una
57
+ impresora compartida que recibe documentos y los imprime cuando así se le indica.
58
+ La palabra "imprimir" imprime un elemento de la cola, el resto de palabras se
59
+ interpretan como nombres de documentos.'''
60
+
61
+ # Navegador web
62
+ def web_browser ():
63
+ stack = []
64
+
65
+ while True :
66
+
67
+ action = input (
68
+ "Añade una url o interactúa con palabras adelante/atrás/salir: "
69
+ )
70
+
71
+ if action == "salir" :
72
+ print ("Saliendo del navegador web." )
73
+ break
74
+ elif action == "adelante" :
75
+ pass
76
+ elif action == "atrás" or action == "atras" :
77
+ if len (stack ) > 0 :
78
+ stack .pop ()
79
+ else :
80
+ stack .append (action )
81
+
82
+ if len (stack ) > 0 :
83
+ print (f"Has navegado a la web: { stack [len (stack ) - 1 ]} ." )
84
+ else :
85
+ print ("Estás en la página de inicio." )
86
+
87
+ #web_browser()
88
+
89
+ # Impresora compartida
90
+ def printer ():
91
+ queue = []
92
+ while True :
93
+ action = input ("Ingrese el nombre de un documento o 'imprimir'/'salir': " )
94
+ if action == "salir" :
95
+ print ("Saliendo de la impresora..." )
96
+ break
97
+ elif action == "imprimir" :
98
+ if len (queue ) > 0 :
99
+ print (f"Imprimiendo documento: { queue [0 ]} ." )
100
+ queue .pop (0 )
101
+ else :
102
+ print ("No hay documentos en la cola." )
103
+ else :
104
+ queue .append (action )
105
+ print (f"Documentos en cola: { queue } " )
106
+
107
+ printer ()
0 commit comments