Pilha x Fila – Conheça as Diferenças e Como Usar Cada Estrutura

Tempo de leitura: 4 min

Escrito por Celso Kitamura
em 4 de junho de 2024

Compartilhe agora mesmo:

Pilha x Fila – Conheça as Diferenças e Como Usar Cada Estrutura
5/5 - (1 voto)

Você não sabe quando usar uma pilha ou uma fila em seus projetos?

 

Nesse vídeo eu vou te mostrar como escolher a estrutura de dados certa para cada situação.

 

Hoje vamos conversar sobre pilha e fila, duas estruturas fundamentais na programação que podem simplificar muito o seu trabalho.

 

 

Pilha x Fila – Conheça as Diferenças e Como Usar Cada Estrutura

 

Antes de entrarmos em detalhes sobre as diferenças entre pilha e fila, é importante entender o que cada uma dessas estruturas representa.

 

Pilha (Stack)

 

Uma pilha é uma estrutura de dados que segue o princípio LIFO (Last In, First Out), ou seja, o último elemento a entrar é o primeiro a sair.

 

Imagine uma pilha de pratos: você coloca um prato no topo e, quando precisa de um prato, pega o do topo.

 

Na programação, a operação de inserir um elemento na pilha é chamada de “push” e a de remover um elemento é chamada de “pop”.

 

Fila (Queue)

 

Já a fila segue o princípio FIFO (First In, First Out), onde o primeiro elemento a entrar é o primeiro a sair.

 

Pense em uma fila de pessoas no caixa do supermercado: a primeira pessoa a entrar na fila é a primeira a ser atendida.

 

Na programação, a operação de adicionar um elemento na fila é chamada de “enqueue” e a de remover um elemento é chamada de “dequeue”.

 

Diferenças entre Pilha e Fila

 

Agora que você já sabe o que são pilha e fila, vamos explorar as principais diferenças entre elas:

 

Ordem de Operações

 

  • Pilha: LIFO (Last In, First Out)
  • Fila: FIFO (First In, First Out)

 

Uso Comum

 

  • Pilha: Usada para problemas onde a ordem de saída precisa ser inversa à de entrada. Exemplos incluem algoritmos de backtracking, operações de desfazer (undo) em editores de texto, e a pilha de chamadas de funções (call stack) em linguagens de programação.
  • Fila: Usada em cenários onde a ordem de processamento deve seguir a ordem de chegada. Exemplos incluem sistemas de impressão, filas de atendimento em serviços, e gerenciamento de threads em sistemas operacionais.

 

Operações Básicas

 

  • Pilha: Push (inserir), Pop (remover)
  • Fila: Enqueue (inserir), Dequeue (remover)

 

Implementação de Pilha e Fila

 

Implementar pilha e fila é um exercício fundamental para quem está começando na programação.

 

Vamos ver como podemos fazer isso em JavaScript.

 

Pilha em JavaScript

 

class Pilha {
    constructor() {
        this.itens = [];
    }

    push(item) {
        this.itens.push(item);
    }

    pop() {
        if (!this.isEmpty()) {
            return this.itens.pop();
        } else {
            throw new Error("pop from empty stack");
        }
    }

    isEmpty() {
        return this.itens.length === 0;
    }

    peek() {
        if (!this.isEmpty()) {
            return this.itens[this.itens.length - 1];
        } else {
            throw new Error("peek from empty stack");
        }
    }
}

// Exemplo de uso:
const pilha = new Pilha();
pilha.push(1);
pilha.push(2);
console.log(pilha.pop()); // 2
console.log(pilha.peek()); // 1

 

 

Fila em JavaScript

 

class Fila {
    constructor() {
        this.itens = [];
    }

    enqueue(item) {
        this.itens.push(item);
    }

    dequeue() {
        if (!this.isEmpty()) {
            return this.itens.shift();
        } else {
            throw new Error("dequeue from empty queue");
        }
    }

    isEmpty() {
        return this.itens.length === 0;
    }

    peek() {
        if (!this.isEmpty()) {
            return this.itens[0];
        } else {
            throw new Error("peek from empty queue");
        }
    }
}

// Exemplo de uso:
const fila = new Fila();
fila.enqueue(1);
fila.enqueue(2);
console.log(fila.dequeue()); // 1
console.log(fila.peek()); // 2

 

 

Quando Usar Pilha e Fila

 

Pilha

 

  • Algoritmos de Backtracking: Pilhas são úteis quando você precisa voltar atrás em um processo, como em algoritmos de busca em profundidade (DFS) ou resolução de labirintos.
  • Desfazer/Ações Temporárias: Em editores de texto ou software de desenho, pilhas são usadas para implementar a funcionalidade de desfazer (undo) e refazer (redo).

 

Fila

 

  • Processamento em Ordem de Chegada: Em sistemas onde a ordem de chegada deve ser respeitada, como em filas de atendimento ou sistemas de impressão.
  • Gerenciamento de Recursos: Em sistemas operacionais, filas são usadas para gerenciar tarefas e threads, assegurando que cada processo receba tempo de CPU em uma ordem justa.

 

Palavras Finais

 

Compreender as diferenças entre pilha e fila é crucial para qualquer programador iniciante.

 

Ambas as estruturas de dados oferecem soluções para problemas específicos e são amplamente utilizadas em diversas áreas da ciência da computação.

 

Pilhas são ideais para situações onde você precisa de um acesso rápido ao último elemento inserido, enquanto filas são perfeitas para cenários onde a ordem de processamento é fundamental.

 

Continue praticando e experimentando com esses conceitos em seus projetos.

 

Converse com meu assistente virtual, o Kitamoore, e ele criará para você um guia personalizado para estudar programação e construir uma carreira de desenvolvedor de sucesso em 12 meses ou menos!

Olha o link: 👉🏼 https://celsokitamura.com.br/GuiaByKitamoore

Bora programar e codar! 👊

Compartilhe agora mesmo:

Você vai gostar também:

Damos valor à sua privacidade

Nós e os nossos parceiros armazenamos ou acedemos a informações dos dispositivos, tais como cookies, e processamos dados pessoais, tais como identificadores exclusivos e informações padrão enviadas pelos dispositivos, para as finalidades descritas abaixo. Poderá clicar para consentir o processamento por nossa parte e pela parte dos nossos parceiros para tais finalidades. Em alternativa, poderá clicar para recusar o consentimento, ou aceder a informações mais pormenorizadas e alterar as suas preferências antes de dar consentimento. As suas preferências serão aplicadas apenas a este website.

Cookies estritamente necessários

Estes cookies são necessários para que o website funcione e não podem ser desligados nos nossos sistemas. Normalmente, eles só são configurados em resposta a ações levadas a cabo por si e que correspondem a uma solicitação de serviços, tais como definir as suas preferências de privacidade, iniciar sessão ou preencher formulários. Pode configurar o seu navegador para bloquear ou alertá-lo(a) sobre esses cookies, mas algumas partes do website não funcionarão. Estes cookies não armazenam qualquer informação pessoal identificável.

Cookies de desempenho

Estes cookies permitem-nos contar visitas e fontes de tráfego, para que possamos medir e melhorar o desempenho do nosso website. Eles ajudam-nos a saber quais são as páginas mais e menos populares e a ver como os visitantes se movimentam pelo website. Todas as informações recolhidas por estes cookies são agregadas e, por conseguinte, anónimas. Se não permitir estes cookies, não saberemos quando visitou o nosso site.

Cookies de funcionalidade

Estes cookies permitem que o site forneça uma funcionalidade e personalização melhoradas. Podem ser estabelecidos por nós ou por fornecedores externos cujos serviços adicionámos às nossas páginas. Se não permitir estes cookies algumas destas funcionalidades, ou mesmo todas, podem não atuar corretamente.

Cookies de publicidade

Estes cookies podem ser estabelecidos através do nosso site pelos nossos parceiros de publicidade. Podem ser usados por essas empresas para construir um perfil sobre os seus interesses e mostrar-lhe anúncios relevantes em outros websites. Eles não armazenam diretamente informações pessoais, mas são baseados na identificação exclusiva do seu navegador e dispositivo de internet. Se não permitir estes cookies, terá menos publicidade direcionada.

Visite as nossas páginas de Políticas de privacidade e Termos e condições.

Importante: Este site faz uso de cookies que podem conter informações de rastreamento sobre os visitantes.
Criado por WP RGPD Pro