DevPath · Aprenda a programar ESPTEN

Estruturas de dados

Pilhas e filas

Pilhas (stacks) e filas (queues)

São duas formas de organizar dados conforme como entram e saem.

Pilha (LIFO)

LIFO = Last In, First Out: o último a entrar é o primeiro a sair, como uma pilha de pratos. Operações típicas: push (empilhar) e pop (desempilhar).

class Pilha {
  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;
  }
}

Fila (FIFO)

FIFO = First In, First Out: o primeiro a entrar é o primeiro a sair, como uma fila numa loja. Operações: enqueue (enfileirar) e dequeue (desenfileirar).

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

Na prática, usar shift() é O(n). Para filas grandes existem implementações mais eficientes, mas esta versão é perfeita para aprender.

Usos reais

Exemplos

Uma pilha em ação

class Pilha {
  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 historico = new Pilha();
historico.push("pagina1");
historico.push("pagina2");
console.log("Elementos:", historico.size);   // 2
console.log("Voltar para:", historico.pop());     // pagina2
console.log("Voltar para:", historico.pop());     // pagina1
Coloque isto em prática

O DevPath é um curso prático: aqui você lê a teoria; no app você a coloca em prática com exercícios que rodam de verdade, offline.

Comece grátis no app →
← Map e SetListas encadeadas e árvores →