Aprendiendo Desarrollo

Stack (Pilas)

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:

  1. Para evaluar expresiones con operandos y operaciones.
  2. 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.
  3. En compiladores, sistemas operativos y programas de aplicaciones, para la organización de la memoria.
  4. Para la evaluación de expresiones aritméticas en notación postfija.
  5. 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