Você está aqui: Java ::: Estruturas de Dados ::: Filas |
Como criar uma fila em Java usando um vetor de inteiros e programação orientada a objetos - A classe FilaQuantidade de visualizações: 805 vezes |
Uma fila é uma estrutura de dados do tipo FIFO (First-In-First-Out), na qual o primeiro elemento a entrar na estrutura é o primeiro a ser removido. Há inúmeras formas de se implementar uma fila em Java. Nesta dica mostrarei como podemos realizar essa tarefa usando uma classe Fila, na qual usaremos um vetor redimensionável (criado a partir de um objeto List). Note que a nossa classe Fila possui os seguintes métodos enfileirar(), desenfileirar(), is_cheia(), is_vazia() e exibir(). Veja o código completo para a classe Fila: Código para Fila.java: package estudos; // definição da classe Fila public class Fila{ private int elementos[]; private int inicio; private int fim; private int tamanho; private int capacidade; // construtor da classe public Fila(int capacidade){ // vetor usado para guardar os elementos this.elementos = new int[capacidade]; // para controlar o início da fila this.inicio = 0; // para controlar o final da fila this.fim = 0; // para registrar o tamanho da fila this.tamanho = 0; // manter um registro da capacidade this.capacidade = capacidade; } // método que permite verificar se a fila está cheia public boolean isCheia(){ // a capacidade é igual ao tamanho da fila? return this.capacidade == this.tamanho; } // método que permite enfileirar um novo valor na fila public void enfileirar(int valor){ // a fila está cheia? if(this.isCheia()){ System.out.println("Fila cheia. Não foi possível enfileirar"); } // insere o novo elemento no final da fila this.elementos[this.fim] = valor; // ajusta a variável fim para a próxima posição this.fim += 1; // incrementa o tamanho da fila this.tamanho += 1; // mostra uma mensagem de sucesso para fins de depuração System.out.println("O valor " + valor + " foi enfileirado."); } // método que permite desenfileirar o elemento na frente da fila public int desenfileirar(){ int valor = -1; // a fila está vazia? if(this.isVazia()){ System.out.println("A fila esta vazia"); return valor; } // a fila não está vazia. Vamos retornar o elemento na frente valor = this.elementos[this.inicio]; // inicio agora aponta para o próximo elemento this.inicio += 1; // depois da remoção a lista vai ficar vazia? if(this.inicio == this.fim){ this.inicio = 0; this.fim = 0; } // diminuimos o tamanho da fila this.tamanho -= 1; // retorna o elemento removido return valor; } // método que permite verificar se a fila está vazia public boolean isVazia(){ // o tamanho da fila é 0? return this.tamanho == 0; } // método que permite exibir o conteúdo da fila public void exibir(){ // a fila está vazia? if(this.isVazia()){ System.out.println("A fila esta vazia"); } else{ // varremos os elementos da fila System.out.print("Elementos na fila: "); for(int i = this.inicio; i < this.fim; i++){ System.out.print(this.elementos[i] + " "); } System.out.println("\nO elemento no início da fila é: " + this.elementos[this.inicio]); System.out.println("O elemento no final da fila é: " + this.elementos[this.fim - 1]); System.out.println("O índice do elemento no início da fila é: " + this.inicio); System.out.println("O índice do elemento no final da fila é: " + (this.fim - 1)); } } } Código para Estudos.java: package estudos; public class Estudos{ public static void main(String args[]){ // vamos criar uma nova fila com capacidade para 10 elementos Fila fila = new Fila(10); // vamos enfileirar 4 valores if(!fila.isCheia()){ fila.enfileirar(30); fila.enfileirar(19); fila.enfileirar(73); fila.enfileirar(58); } else{ System.out.println("A fila está cheia"); } // agora vamos exibir o conteúdo da fila if(!fila.isVazia()){ fila.exibir(); } // vamos desenfileirar 3 valores for(int i = 0; i < 3; i++){ if(!fila.isVazia()){ int valor = fila.desenfileirar(); System.out.println("O valor " + valor + " foi desenfileirado."); } } // agora vamos exibir o conteúdo da fila novamente if(!fila.isVazia()){ fila.exibir(); } } } Ao executar este código Java nós teremos o seguinte resultado: O valor 30 foi enfileirado. O valor 19 foi enfileirado. O valor 73 foi enfileirado. O valor 58 foi enfileirado. Elementos na fila: 30 19 73 58 O elemento no início da fila é: 30 O elemento no final da fila é: 58 O índice do elemento no início da fila é: 0 O índice do elemento no final da fila é: 3 O valor 30 foi desenfileirado. O valor 19 foi desenfileirado. O valor 73 foi desenfileirado. Elementos na fila: 58 O elemento no início da fila é: 58 O elemento no final da fila é: 58 O índice do elemento no início da fila é: 3 O índice do elemento no final da fila é: 3 |
![]() |
Desafios, Exercícios e Algoritmos Resolvidos de Java |
Veja mais Dicas e truques de Java |
Dicas e truques de outras linguagens |
GNU Octave - Como calcular o comprimento da hipotenusa em GNU Octave dadas as medidas do cateto oposto e do cateto adjascente |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |