Como você deve saber, uma estrutura de dados é um meio de organizar
dados. A estrutura de dados mais simples é o array, uma lista linear que permite o acesso aleatório aos seus elementos. Com frequência, os arrays são usados como base para estruturas de dados mais sofisticadas, como as pilhas e filas.
Pilha é uma lista em que os elementos só podem ser acessados na ordem primeiro a entrar, último a sair (FILO, first-in, last-out). Fila é uma lista em que os elementos só podem ser acessados na ordem primeiro a entrar, primeiro a sair (FIFO, first-in, last-out). Logo, uma pilha é como uma pilha de pratos em uma mesa – o primeiro de baixo para cima é o último a ser usado. Uma fila é como a fila em um banco – o
O primeiro da fila é o primeiro a ser atendido.
O que torna estruturas de dados como as pilhas e filas interessantes é que elas combinam o armazenamento de informações com os métodos que as acessam. Portanto, as pilhas e filas são máquinas de dados em que o armazenamento e a recuperação são fornecidos pela própria estrutura de dados e não manualmente pelo programa. É claro que essa combinação é uma ótima opção para uma classe e neste projeto você criará uma classe de fila simples.
Em geral, as filas dão suporte a duas operações básicas: put e get. Cada operação put insere um novo elemento no fim da fila. Cada operação get recupera o próximo elemento do início da fila. As operaçoes de fila têm natureza consumidora:
quando um elemento é retirado, não pode ser recuperado novamente. A fila também pode ficar cheia, se não houver espaço disponível para armazenar um item, e vazia, se todos os elementos tiverem sido removidos.
Uma última coisa: há dois tipos básicos de filas – circular e não circular. Uma fila circular reutiliza os locais do array subjacente quando elementos são removidos.
Usa length para comparar tamanhos de arrays.
Uma fila não circular não reutiliza os locais e acaba se exaurindo. Para simplificar, esse exemplo cria uma fila não circular, mas com um pouco de raciocínio e esforço, você pode transformá-la facilmente em uma fila circular.
QDemo.java