Você está na página 1de 21

Algoritmos de Programao II

AULA 13
Aula 12
C8 - (N) Compreender e aplicar o
conceito de pilhas, filas e listas usando
uma linguagem de programao.
Filas (Queue)
A estrutura de fila anloga ao conceito que temos
de filas em geral. O primeiro a chegar sempre o
primeiro a sair, e a entrada de novos elementos sempre
se d no fim da fila.

Em computao vemos este conceito sendo
implementado em filas de impresso.

Assim como as pilhas, uma fila tambm pode ser
implementada por meio de um vetor ou de uma lista
encadeada.
Fila
O padro do comportamento de uma fila
indica que o primeiro elemento a ser
inserido (empilhado), o primeiro a ser
removido.


Fila
As filas so referncias como estrutura FIFO
(First In, First Output Primeiro a entrar,
primeiro a sair).
Fila - Operaes
Em filas podemos executar duas operaes:
A operao Enqueue que significa Inserir.
A operao Dequeue que significa retirar.
Na estrutura da fila precisamos controlar:
Contedo
Inicio
Fim
Filas - Aplicao
Gerenciamento de senhas em filas de espera;

Controle de trfego areo: fila de avies para
decolar/aterrissar;

Fila de impresso;


Filas - Lineares
As filas tambm podem ser representadas por um vetor.

O vetor utilizado para armazenar os elementos da fila
juntamente com duas variveis, inicio e fim, que
representam, respectivamente, as posies dentro do
vetor do primeiro e ultimo elementos dessa fila.
Fila - Operaes
insere(q, A);
insere(q, B);
insere(q, C);
x = retira (q);
insere(q, D);
insere(q, E)
Fila - Lineares
Mostre a situao de uma Fila F, inicialmente vazia,
aps a execuo de cada uma das seguintes operaes:
Insere(F,a);
Insere(F,b);
Insere (F,c);
Insere (F,d);
Retire (F);
Retire (F);
Insere (F,e);
Retire (F);
Insere (F,f);
Retire (F);
Insere (F,g);
Filas Operaes
Problema: como reutilizar as clulas?
Existem duas alternativas para solucionar este problema:

Primeira alternativa: Toda vez que um elemento
retirado da fila, ocorre um deslocamento de todos
os outros.
Filas Operaes
Problema: como reutilizar as clulas?
Filas Operaes
Problema: como reutilizar as clulas?
Problema dessa soluo:

Toda vez que um elemento retirado do inicio da fila
(posio 0), todos os outros elementos so deslocados.
Isto pode representar perda de eficincia (tempo).
Filas Operaes
Problema: como reutilizar as clulas?
Existem duas alternativas para solucionar este problema:

Segunda alternativa: Usar uma fila circular, ou seja,
considera que depois do ltimo vem o primeiro (se
houver espao).
OBS: A diferena entre a fila convencional e uma fila
circular que na fila circular feito o reaproveitamento
de espao de armazenamento que foi liberado atravs da
excluso de elementos da fila.
Filas Operaes
Fila Circular
Filas Operaes
Fila Circular
Filas Operaes
Fila Circular
Filas Operaes
Fila Circular
Filas Circulares
Problema: como reutilizar as clulas?
Problema dessa soluo:
Como saber se a fila est vazia!?
Na fila circular com capacidade de no mximo m
elementos, precisamos diferenciar quando a fila est vazia
e quando a fila est cheia. Para isso, assumimos que exista
uma varivel qtd incrementada ou decrementada
sempre que se insere ou se retira elementos da fila
respectivamente.
Assim, para criar a fila faa:

Filas Circulares
Assim, para criar a fila faa:

1. fim = primeiro = qtd = 0.

Para verificar se a fila est cheia faa:

1. Se qtd = m ento fila cheia.

Para verifica se a fila est vazia faa:

1. Se qtd == 0 ento fila vazia.

Filas Circulares
Para inserir um elemento x na fila que no esteja cheia faa:

1. v[fim] = x

2. qtd = qtd + 1

3. fim = fim + 1

4. Se fim == m ento fim = 0.
Para retirar um elemento x da fila que no esteja vazia faa:
1. x = v[inicio]

2. qtd = qtd 1

3. inicio = inicio + 1

4. Se inicio == m ento inicio = 0

5. Retorne x.