|
| 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 | +// stack - LIFO: Last In, First Out |
| 20 | + |
| 21 | +const arr = [0,1,2,3,4,5]; |
| 22 | + |
| 23 | +const lastIn = (num) => { |
| 24 | + arr.push(num); |
| 25 | + console.log(arr); |
| 26 | +} |
| 27 | +const firstOut = () => { |
| 28 | + arr.pop(); |
| 29 | + console.log(arr); |
| 30 | +} |
| 31 | +// lastIn(8); output => [0,1,2,3,4,5,8] |
| 32 | +// firstOut(); output => [0,1,2,3,4,5] |
| 33 | + |
| 34 | +// queue - FIFO: First In, First Out |
| 35 | + |
| 36 | +const firstIn = (num) => { |
| 37 | + arr.unshift(num); |
| 38 | + console.log(arr); |
| 39 | +} |
| 40 | + |
| 41 | +// firstIn(8); output => [8,1,2,3,4,5]; |
| 42 | +// firstOut(); output => [8,1,2,3,4]; |
| 43 | + |
| 44 | +/* |
| 45 | +* En la pila (stack) el último en llegar es el primero en salir, su analogia seria una pila de platos. |
| 46 | +* En la cola (queue) uno llega por un extremo y el otro sale por el otro extremo, su analogia seria una cola en el supermercado. |
| 47 | +*/ |
| 48 | + |
| 49 | +const webs = ["inicio"]; |
| 50 | +let index = 0; |
| 51 | +const paginaWeb = (string) => { |
| 52 | + if (string === "adelante") { |
| 53 | + index++; |
| 54 | + console.log(webs[index]) |
| 55 | + } else if (string==="atras") { |
| 56 | + index--; |
| 57 | + console.log(webs[index]) |
| 58 | + } else if (string) { |
| 59 | + webs.push(string); |
| 60 | + console.log(webs); |
| 61 | + } |
| 62 | +} |
| 63 | +/* |
| 64 | +paginaWeb("55"); |
| 65 | +paginaWeb("0"); |
| 66 | +paginaWeb("adelante"); |
| 67 | +paginaWeb("adelante"); |
| 68 | +paginaWeb("atras"); |
| 69 | +paginaWeb("adelante"); |
| 70 | +*/ |
| 71 | + |
| 72 | +const documentos = ["lista", "dibujo", "redacción"]; |
| 73 | + |
| 74 | +const impresora = (string) => { |
| 75 | + if (string === "imprimir") { |
| 76 | + console.log(`Imprimiendo: ${documentos[documentos.length-1]}`) |
| 77 | + documentos.pop(); |
| 78 | + } else if (string) { |
| 79 | + documentos.unshift(string); |
| 80 | + console.log(`Lista de documentos: ${documentos}`); |
| 81 | + } |
| 82 | +} |
| 83 | +/* |
| 84 | +impresora("cv"); |
| 85 | +impresora("imprimir"); |
| 86 | +impresora("nuevo cv"); |
| 87 | +*/ |
0 commit comments