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! 👊