Você está na página 1de 27

Filas em C

Introduo
Em determinadas situaes se faz necessrio a restrio de entrada e sada de dados. Essas restries so critrios adotados, que gerenciam uma ordem. Os critrios so:
LIFO; FIFO.

LIFO:
Last In First Out; O primeiro a ser retirado o ltimo que foi colocado

pilha

FIFO:
First In First Out; O primeiro elemento a ser retirado o primeiro que foi colocado.

Fila

As pilhas e Filas so estruturas que tambm como as listas seqenciais, no necessitam de grandes movimentaes, e que os nos para as inseres e remoes esto em posies especiais (primeira e ltima). Essas posies geralmente utilizam-se de um ponteiro, que no caso da pilha, o topo.

Filas
Fila uma estrutura FIFO que se define como uma lista linear. Para se entender o conceito de uma pilha basta imaginar a fila de um banco. A fila do caixa da UNIFEV, etc... Existem Filas seqenciais e dinmicas.

Um exemplo de no fila

Um exemplo de Fila

Definio
Uma fila uma lista na qual as inseres so feitas em uma extremidade chamada cauda, e as retiradas so feitas na outro extremidade, chamada cabea. [COLLINS, 1998, p.193]
Para Pereira (1996), a insero realizada no FINAL e a remoo no COMEO. A ordem de sada corresponde a ordem de entrada dos elementos, onde o primeiro que entrou ser o primeiro a sair.

Critrios

Uma Fila se insere elementos ao final Em uma Fila se retira elementos do incio

O que no se faz em fila:


Uma Fila no se insere elementos ao meio dela; Em uma Fila no se retira elementos ao meio dela.

O que fazer se preciso trabalhar com um elemento do meio da fila?

Operaes

Criar; Verificar fila vazia; Verificar tamanho; Acessar o elemento que esta na cabea; Inserir um elemento da cauda; Eliminar um elemento da cabea.

Funes

enqueue() - inserir valores na Fila;

dequeue retirar valores da fila;

Utilizao
Segundo Pereira (1996), uma fila se aplica em computao grfica na colorao de desenhos, matrizes de pontos; Sistemas operacionais impresso;; Etc...

Algoritmo

F:

Comeo

Final

Exemplo
Operao Enqueue(F,a) Enqueue(F,b) Enqueue(F,c) Enqueue(F,d) Dequeue(F) Dequeue(F) Estado da pilha F:[ a] F:[a,b ] F:[a,b,c ] F:[a,b,c,d ] F: [b,c,d ] F: [d,c ] A B resultado

Enqueue(F,e) Enqueue(F,f)
Enqueue(F,Deque ue (F)) Dequeue(F) Dequeue(F) Dequeue(F)

F:[ c,d,e] F:[c,d,e,f ]


F:[d,e,f ] F: [ d,e,f,c] F: [ e,f,c ] F: [ f,c ] F: [c ] C D E F

Definindo a Fila

struct fila{ int comeco; int final; int memo[tamnho]; }; struct fila f;

inicializando
Uma funo que zere os elementos da fila. f.comeco = -1; f.final = -1;

Verificando vazia ou cheia


Uma funo que verifica se uma fila esta cheia ou vazia.
if (f.comeco == f.final) puts(" vazia "); else if ( f.final>MAX) puts(" cheia");

Enqueue inserir
Criar uma rotina que receba valor por referencia e a funo no precisa de retorno. enqueue ( elemento valor) f.memo [ f.final]= x; f.final = f.final +1;

Dequeue removendo
Funo que retorne a nova posicao dequeue (tipo fila) f.memo[f.comeco]=NULL; f.comeco = f.comeco +1;

Verificar elemento
Funo que apresenta os valores de uma fila.

apresenta( f.memo[f.comeco]); Apresenta( f.final); Apresenta( f.comeco);

Exerccio
Construir o programa que permita, atravs de funes as rotinas abaixo: Criar; Verificar tamanho; Verificar se vazia; Inserir; Remover; Verificar seu contedo.

Bibliografias
COLLINS, WJ. Programao estruturada com estudos de casos em Pascal. So Paulo: McGraw-Hill, 1988. PEREIRA, SL do. Estruturas de Dados Fundamentais: Conceitos e Aplicaes. So Paulo: rica, 1996. SCHILD, H. C, Completo e Total. So Paulo: Makron, McGraw-Hill, 1990. SZWARCFITER, JL; MARKENZON, L. Estruturas de Dados e seus Algoritmos. 2 ed. Rio de Janeiro: LTC, 1994. TENENBAUM, AM. Estruturas de dados usando C. So Paulo: Makron Books, 1995. ZIVIANI, N Projeto de Algoritmos: com implementao em Pascal e C. So Paulo: Pioneira Thomson Learnning, 2002.