Pilha (stack) e fila (queue)

Pilha e fila são tipos de estrutura de dados que contribuem para um gerenciamento de dados mais inteligente e eficaz na programação

Categoria de Programação

Postado em 18 agosto 2022

Atualizado em 18 agosto 2022

Palavras-chave: programacao,programming,memory,memoria,gerenciamento,dados,pilha,fila

Visualizações: 2199



Na programação, existem vários tipos de implementação que ajudam a melhorar a performance do algoritmo em alguns aspectos. Dependendo dos requisitos do programa, diferentes implementações devem ser adotadas.

A estrutura de dados no conceito da programação, estuda as formas de implementação para melhorar as operações de algoritmos.

Quanto mais dados a serem processados, mais o processo deve ser levado em consideração, pois um algoritmo mal planejado pode gerar graves problemas para um programa.

Exemplos de estrutura de dados frequentemente utilizado na programação são a pilha e a fila.

O que é a pilha na estrutura de dados no conceito da ciência da computação?

Pilha vem do inglês stack.

A pilha é um tipo de estrutura de dados onde dados são empilhados um encima do outro. Stack se baseia no conceito de LIFO.

O que significa o conceito LIFO na estrutura de dados?

LIFO é a sigla para “last in first out”, em português, último a entrar é o primeiro a sair.

stack pilha

Exemplo de implementação da pilha na prática

class Pilha {
    // Número máximo de itens que podem ser empilhados
    static final int MAX = 10;
    
    // Item atual no topo de pilha
    int topo;
    
    // Até 10 itens podem ser empilhados
    int pilha[] = new int[MAX];
    
    Pilha() {
	    topo =  -1;
    }

    // Empilhar
    void push(int novoItem) {
	    if (topo >= (MAX -  1)) {
		    throw  new  Exception("Pilha cheia");
	    } 
	    
	    pilha[++topo] = novoItem;
    }
    
    // Extrair
    int pop() {
	    if (topo <  0) {
		    throw  new  Exception("Pilha está vazia");
	    }
    
	    int itemExtraido = pilha[topo--];
	    return itemExtraido;
    }
}

Por que utilizar a pilha na programação?

A pilha é uma técnica que pode ser usada em algoritmos que precisam de um processo iterativo recursivo. Isso significa que todos os dados podem ser extraídos na mesma ordem que foram inseridos.

Por isso, a pilha é utilizada quando a ordem de inserção dos dados importa.

Quais são alguns exemplos de implementação da pilha na programação?

Exemplos dessa implementação são o processo “desfazer”, disponível em todos os computadores e o botão de “retornar”, disponível em todos os navegadores.

Quais são as vantagens de implementar a pilha?

A pilha é um método bastante simples, eficiente e de fácil gerenciamento. Graças a sua simplicidade, dificilmente apresenta problemas como corrompimento, portanto sendo considerado uma técnica bastante segura.

Quando dados são extraídos da pilha, eles são deletados da memória automaticamente, gerenciamento melhor a questão da utilização de memória da máquina.

O que é a fila na estrutura de dados no conceito da ciência da computação?

Fila vem do inglês queue.

A fila é um tipo de estrutura de dados, enfileirando um item após o outros. Queue se baseia no conceito de FIFO.

O que significa o conceito FIFO na estrutura de dados?

FIFO é a sigla para “first in first out”, em português, primeiro a entrar é o primeiro a sair.

stack pilha

Exemplo de implementação da fila na prática

public class Fila {
    int MAX = 5;
    int fila[] = new int[MAX];
    int frente, finalDaFila;

    Fila() {
        frente = -1;
        finalDaFila = -1;
    }

    void enqueue(int objeto) {
        if (frente == 0 && finalDaFila == MAX - 1) {
	        throw  new  Exception("Fila cheia");
        }

        if (frente == -1) {
            frente = 0;
        }
        fila[++finalDaFila] = objeto;
    }

    int desenfileirar() {
        int item;
		if (frente == -1) {
	        throw  new  Exception("Fila vazia");
        }
        
        item = items[frente];
        if (frente >= finalDaFila) {
            frente = -1;
            finalDaFila = -1;
        } else {
	        frente++;
        }
        
        return item;
    }
}

Por que utilizar a fila na programação?

A fila é usada em ocasiões onde os dados serão extraídos na ordem de chegada. Diferente da pilha, onde o último item inserido é o primeiro a ser retirado.

Quais são alguns exemplos de implementação da fila na programação?

As tarefas realizadas pelo CPU são um exemplo de fila. Essas tarefas são executadas pelo CPU em ordem de chegada.

Outro exemplo de fila é o drive thru, onde o primeiro carro a fazer o pedido será o primeiro a receber o lanche.

Quais são as vantagens de implementar a fila?

As vantagens da fila são as mesmas que pilha. A escolha entre os dois vai depender das necessidades do algoritmo.

Conclusão

Queue e Stack são conceitos extremamente comuns na programação. Sua implementação pode trazer grandes benefícios para algoritmos que precisam processar uma grande quantidade de dados, evitando o gasto de memória desnecessário e melhorando o gerenciamento desses dados de forma mais inteligente.

Projetos práticos

Criando artes de texto usando imagens

Convertendo imagens para ascii art usando o valor da intensidade das cores cinzentas.

Criando um sistema de mini garagem automatizada integrada com um sistema de monitoramento independente

Desenvolvimento de um sistema de monitoramento que exibi todos os eventos que acontecem na garagem automatizada, como abertura de portões ou ocupação de vagas.

Caixa eletrônico usando arquitetura limpa

Usando JavaFX e arquitetura limpa para criar um aplicativo de caixa eletrônico extremamente simples.

Desenvolvendo o campo de visão de um personagem em um plano 2D

Detectando objetos que entram dentro do campo de visão do personagem. Útil para servir de "gatilho" para eventos em um jogo.

Integrando o PHP com Elasticsearch no desenvolvimento de um sistema de busca

Projeto de criação de um sistema de busca usando o framework Symfony e Elasticsearch. A integração com Kibana também é feito de modo remoto com um raspberrypi.

Veja também

Afinal, vale a pena gastar tempo com web marketing?

Expressões como gastar tempo e investir tempo andam lado a lado. Quando algo investido não tem o retorno esperado isso se torna uma perde de tempo...

Os três pilares de segurança da informação são o requerimento mínimo para um serviço seguro

A quantidade de programadores só tende a aumentar com o tempo. Porém, muitos programadores ainda não conhecem os três pilares de segurança da informação.

Linguagem de programação

A linguagem de programação é um conjunto de instruções que possuem um padrão de escritas, sendo um intermediário entre o programador humano e a máquina.

Ciência de dados

Data Science ou ciência de dados, é uma área de computação que se concentra em extrair informações valiosas de grandes quantidades de dados.

Modelo OSI

Modelo teórico dividido em sete camadas que fornece uma arquitetura padrão de rede para realizar a transferência de dados entre computadores.

Princípio de substituição de Liskov - Liskov Substitution Principle

Esse princípio diz que uma classe derivada deve ser substituível pela sua classe base sem apresentar comportamentos inesperados.