Este documento apresenta os conceitos e algoritmos de filas. Filas armazenam itens em ordem de inserção (FIFO) com remoção ocorrendo sempre no início. Os algoritmos ENQUEUE e DEQUEUE inserem e removem itens da fila. Exemplos ilustram o funcionamento das operações e como os ponteiros i e f indicam início e fim da fila. Exercícios pedem para ilustrar operações em uma fila e reescrever os algoritmos para verificar overflow e underflow.
2. CONTEÚDO DA AULA
Conceitos • Filas
• Enqueue
• Dequeue Algoritmos
Exercícios •Operações com pilhas
3. CONCEITOS
Filas
• A estrutura de dados fila é também uma variação do deque.
• A fila implementa a seguinte norma: O primeiro a entrar é o
primeiro a sair, ou FIFO (first in first out)
• A fila é uma lista em que todas as inserções ocorrem em
uma das extremidades e todas as remoções ocorrem na
outra
• INICIO: extremidade onde ocorrem as remoções
• FIM: extremidade onde ocorrem as inserções
4. CARACTERÍSTICAS DAS PILHAS
Formas de
armazenamento
• Em vetores
• Ponteiros um ponteiro indica o início da fila
e outro indica o final da fila
Operações
básicas
• Inserir um elemento(enfileirar) – ENQUEUE(Q,x)
• Remover um elemento(desnfileirar) –
DEQUEUE(Q)
Operações
inválidas
• Inserção em fila cheia – OVERFLOW
• Remoção em fila vazia – UNDERFLOW
5. EXEMPLO DE OPERAÇÃO EM UMA
FILA Q
Fila vazia
ENQUEUE(Q,A)
- - - - - - - - - A
5 4 3 2
1
i = f = 0
5 4 3 2
1
i = f = 1
ENQUEUE(Q,B) DEQUEUE(Q)
- - - B A - - - B -
5 4 3 2
1
5 4 3 2
1
i = 1; f = 2 i = f = 2
A figura acima ilustra algumas operações na fila Q, utilizando os algoritmos e os
ponteiros i (início da fila) e f (fim da fila )
6. CONTINUAÇÃO DO EXEMPLO
ENQUEUE(Q,C)
DEQUEUE(Q)
- - C B - - - C - -
5 4 3 2
1
i = 2; f = 3
5 4 3 2
1
i = f = 1;
DEQUEUE(Q) DEQUEUE(Q)
- - - - - - - - - -
5 4 3 2
1
5 4 3 2
1
i = 1; f = 2 i = f = 2
Observe que na última operação ocorre uma erro de UNDERFLOW, onde a fila já se
encontra vazia e mesmo assim é dado o comando de desinfileirar.
7. O ALGORITMO ENQUEUE(Q,X)
•O algoritmo ENQUEUE(Q,x) realiza o enfileiramento, ou seja, ele insere
um elemento no final da fila. Conceito
•ENQUEUE(Q,x)
• Q[fim[Q] x
• if fim[Q] = comprimento[Q]
• then fim[Q] 1
• else fim[Q] fim[Q + 1]
Código
8. O ALGORITMO DEQUEUE(Q)
•O algoritmo DEQUEUE(Q) realiza o desinfileiramento, ou seja, ele remove um elemento
no início da fila. Conceito
•DEQUEUE(Q)
•X Q[inicio[Q]
• if inicio[Q] = comprimento[Q]
• then inicio[Q] 1
• else inicio[Q] inicio[Q + 1]
•Return x
Código
9. EXERCÍCIO
1. Utilizando o modelo de fila exemplo passado, ilustre o resultado
de cada operação na sequência ENQUEUE(Q,4), ENQUEUE(Q,1),
ENQUEUE(Q,3), DEQUEUE(Q), ENQUEUE(Q,8), DEQUEUE(Q), sobre uma
fila Q inicialmente vazia armazenada num arranjo[1 .. 5].
2. Reescreva dos algoritmos ENQUEUE(Q,x) e DEQUEUE(Q) de modo
que seja feita a verificação de Overflow e Underflow