DevPath · Aprende a programar ESPTEN

Estructuras de datos

Pilas y colas

Pilas (stacks) y colas (queues)

Son dos formas de organizar datos según cómo entran y salen.

Pila (LIFO)

LIFO = Last In, First Out: el último en entrar es el primero en salir, como una pila de platos. Operaciones típicas: push (apilar) y pop (desapilar).

class Pila {
  constructor() {
    this.items = [];
  }
  push(valor) {
    this.items.push(valor);
  }
  pop() {
    return this.items.pop();
  }
  peek() {
    return this.items[this.items.length - 1];
  }
  get size() {
    return this.items.length;
  }
}

Cola (FIFO)

FIFO = First In, First Out: el primero en entrar es el primero en salir, como una fila en una tienda. Operaciones: enqueue (encolar) y dequeue (sacar).

class Cola {
  constructor() {
    this.items = [];
  }
  enqueue(valor) {
    this.items.push(valor);
  }
  dequeue() {
    return this.items.shift();
  }
  get size() {
    return this.items.length;
  }
}

En la práctica, usar shift() es O(n). Para colas grandes existen implementaciones más eficientes, pero esta versión es perfecta para aprender.

Usos reales

Ejemplos

Una pila en acción

class Pila {
  constructor() { this.items = []; }
  push(valor) { this.items.push(valor); }
  pop() { return this.items.pop(); }
  peek() { return this.items[this.items.length - 1]; }
  get size() { return this.items.length; }
}

const historial = new Pila();
historial.push("pagina1");
historial.push("pagina2");
console.log("Elementos:", historial.size);   // 2
console.log("Atrás a:", historial.pop());     // pagina2
console.log("Atrás a:", historial.pop());     // pagina1
Pon esto en práctica

DevPath es un curso práctico: aquí lees la teoría; en la app la pones en práctica con ejercicios que se ejecutan de verdad, sin conexión.

Empezar gratis en la app →
← Map y SetListas enlazadas y árboles →