Você está na página 1de 10

2.

2 Filas usando Vetores


A Fila uma estrutura de dados que simula uma fila da vida real. Possui duas operaes bsicas:

Incluir no fim da fila Retirar do comeo da fila. Chamada de Estrutura-FIFO: First-In, First-Out - O primeiro que entrou o primeiro a sair..

Fila

2.2 Filas

uma estrutura de dados improtantssima para:

Gerncia de dados/processos por ordem cronolgica:


Fila de impresso em uma impressora de rede Fila de pedidos de uma expedio ou tele-entrega. Cho de fbrica: fila de camisetas a serem estampadas. Comrcio: simulao de fluxo de um caixa de supermercado. Trfego: simulao de um cruzamento com um semforo.
Fila

Simulao de processos seqenciais:


2.2 Filas usando Vetores


Fila cheia 24 89 12 4 55 20 -1 5 4 3 2 1 0 posio do ltimo incio da fila Fila vazia Vetores possuem um espao limitado para armazenamento de dados. Necessitamos definir um espao grande o suficiente para a nossa fila. Necessitamos de um indicador de qual elemento do vetor o atual fim da fim (ultimo). Inclumos sempre no fim.

2.2 Filas usando Vetores - Algoritmo Retira

Procedimento:

24 24 89 89 12 12 4 55 4 55 20 4 5 20 posio do ltimo

Testamos se h elementos. Decrementamos o fim da fila (ltimo). Salvamos e primeiro elemento em varivel aux. Empuramos tudo para a frente. Fila (global).

Parmetros:

incio da fila

Exemplo de Fila no Mundo Real


Muitas coisas so ordenadas por fila; A fila de um banco por exemplo; Muitos processos e requisies em um computador so organizados e gerenciados por meio de filas.

Implementao de uma Fila


type PNo = ^TNo; TNo = record valor: integer; proximo: PNo; end; TFila = record head: PNo; tail: PNo; end; function push(var pilha: TFila; valor: integer): Boolean; function pop(var pilha: TFila): integer;

Implementao de uma Fila


Push: Apesar de inserir no final, ns no precisaremos percorrer toda a fila para inserir no fim;
Ns mantemos um ponteiro para o ltimo elemento!

Pop: A remoo continua sendo feita na cabea, o que facilita muito as coisas.

Implementando o Mtodo Push


function push(var fila: TFila; valor: integer): Boolean; var p, t: PNo; Begin new(p); p^.valor := v; p^.proximo := nil; if (fila.tail = nil) then fila.head := p else fila.tail^.proximo := p; fila.tail := p; push := true; end;

Implementando o Mtodo Pop


function pop(var fila: TFila): integer; var p: PNo; Begin if (fila^.head = nil) then pop := -1; else begin p := fila; fila^.head := fila^.head^.proximo; if (fila^.head = nil) then fila^.tail := nil; pop := p^.valor; dispose(p); end; end;

Você também pode gostar