Stack (Pilas)
En esta Página
Una pila es una colección lineal de elementos donde los elementos se insertan y se eliminan en un orden específico. También se llama una Estructura de Datos LIFO (Last In, First Out) porque sigue el principio “último en entrar, primero en salir”, es decir, el elemento que se inserta en último lugar es el primero en ser retirado.
Aquí te dejo un ejemplo básico de cómo se podría implementar una pila en JavaScript:
class Stack {
constructor() {
this.items = [];
}
// Agrega un elemento a la pila
push(element) {
this.items.push(element);
}
// Elimina un elemento de la pila
pop() {
if (this.items.length == 0)
return "Underflow";
return this.items.pop();
}
// Devuelve el elemento superior de la pila
peek() {
return this.items[this.items.length - 1];
}
// Verifica si la pila está vacía
isEmpty() {
return this.items.length == 0;
}
// Imprime los elementos de la pila
printStack() {
var str = "";
for (var i = 0; i < this.items.length; i++)
str += this.items[i] + " ";
return str;
}
}
// Usando la pila
var stack = new Stack();
console.log(stack.isEmpty()); // devuelve true
stack.push(10);
stack.push(20);
stack.push(30);
console.log(stack.printStack()); // imprime 10 20 30
console.log(stack.peek()); // imprime 30
stack.pop();
console.log(stack.printStack()); // imprime 10 20
En este código, la clase Stack tiene métodos para agregar un elemento a la pila (push), eliminar un elemento de la pila (pop), ver el elemento superior de la pila (peek), verificar si la pila está vacía (isEmpty) e imprimir los elementos de la pila (printStack).
Las pilas se utilizan en diversos contextos, como por ejemplo:
- Para evaluar expresiones con operandos y operaciones.
- En el historial de navegación web, donde cada nueva página visitada se añade a la pila y podemos retroceder en el historial.
- En compiladores, sistemas operativos y programas de aplicaciones, para la organización de la memoria.
- Para la evaluación de expresiones aritméticas en notación postfija.
- En la implementación de funciones de deshacer en editores de texto.
Enlaces de interés
Videos
Practicas
Preguntas
¿Cuál es el principio fundamental que sigue una pila (stack)?
¿Qué método se utiliza para agregar un elemento a la pila?
¿Qué método elimina el elemento superior de la pila?
¿Cuál de las siguientes NO es una aplicación común de las pilas?
¿Qué devuelve el método peek() en la clase Stack?
Reto de programación
Crea una Pila (Stack)
Loading editor...
// A continuacion agrega o corrige el codigo // para tener una Pila funcional function main(params) { const pila = new stack(); params.forEach(val => pila.push(val)) pila.pop() let result = [ pila.peek(), pila.isEmpty(), pila.printStack() ] return result; } class stack { constructor() { } // Agrega un elemento a la pila push(element) { } // Elimina un elemento de la pila pop() { } // Devuelve el elemento superior de la pila peek() { } // Verifica si la pila está vacía isEmpty() { } // Imprime los elementos de la pila printStack() { } }
Aqui se mostraran tus resultados