Os elementos são utilizados sequencialmente na ordem que são armazenados.
Novos elementos são
armazenados no final da
fila.
Tem marcadores de início e de fim.
Métodos
isFull
Verificar se a fila está cheia.
isEmpty
Verificar se a fila está vazia.
Se inicio e/ou fim estiverem apontando para -1(estática).
Size
Verificar e retornar o tamanho da fila.
Estática: apontador fim -1;
Dinâmica: fazer um contador
ou percorrer toda a estrutura
contando.
Enqueue (Enfileirar)
Adicionar um elemento a fila.
Consiste em inserir um elemento no final da fila e
atualizar a posição dos marcadores da fila .
Se a fila for estática, verificar se ela
não está cheia.
Se ela estiver
vazia, adicionar
como primeiro
elemento e inicio
e fim apontam
para tal
elemento.
Se não estiver vazia, adiciona o elemento depois do último e
acrescenta o fim.
Dequeue (Desenfileirar)
Se a fila for estática, verificar se ela não
está vazia.
Consistem em remover o elemento do início da fila.
Se inicio e fim
marcarem o mesmo
elemento(que aponta
apenas um elemento
na fila, remove este e
inicio e fim passam a
ser -1.)
Caso contrário, remove o elemento do início e incrementa início.
Fazer a reorganização da fila, fazendo os elementos "andarem um para frente".
O elemento é retornado.
Front (Peek)
Retorna o primeiro valor da fila.
Não precisa de
parâmetros.
Fila circular
Evita ter que fazer a reorganização da fila.
As posições do primeiro e do último elemento são
definidas dinamicamente.
O primeiro elemento da fila inicialmente ocupa a posição 0,
e à medida que elementos são desenfileirados o início passa
a ser a posição seguinte. As posições disponíveis são
ocupadas com novas inserções e, desta maneira, quando a
última posição do vetor está ocupada, mas existem posições
disponíveis, o ciclo de preenchimento volta para a posição 0.
Pode-se criar uma variável qtd,a
qual é incrementada ou
decrementada a medida que
inserem-se ou removem-se
elementos da fila.
Assim , para criar a fila faça
: – fim = primeiro = qtd = 0;
Para verificar se a fila está
cheia faça : – Se qtd = m
então fila cheia; Para
verifica se a fila está vazia
faça : – Se qtd == 0 então
fila vazia;
Início e fim são
deslocados de
acordo com as
operações
realizadas.