A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Professor Ulisses Vasconcelos

Apresentações semelhantes


Apresentação em tema: "Professor Ulisses Vasconcelos"— Transcrição da apresentação:

1 Professor Ulisses Vasconcelos
Estrutura de dados Aula 03 - Filas Professor Ulisses Vasconcelos

2 Professor Ulisses Vasconcelos
FILA Conceito Inserção Remoção Professor Ulisses Vasconcelos

3 Professor Ulisses Vasconcelos
FILA - Conceitos Fila: É uma lista linear na qual todas as inserções são feitas num extremo da lista (a parte de trás) e todas as eliminações, e normalmente todos os acessos, são feitos no outro extremo da lista (parte da frente). Inserção e remoção baseado em fifo: O primeiro a entrar é o primeiro a sair e o ultimo a entrar é também o ultimo a sair (First-In / First-Out) Estrutura dinâmica: Comprimento variável O único elemento que se tem acesso é o elemento que está na frente Professor Ulisses Vasconcelos

4 Professor Ulisses Vasconcelos
FILA - Conceitos Fila cheia Fila de vetores - Insere Vetores possuem um espaço limitado para armazenamento de dados. Necessitamos definir um espaço grande o suficiente para a nossa fila. Necessitamos de um indicador de qual elemento do vetor é o atual fim da fim (ultimo). Incluímos sempre no fim. 24 89 12 4 Fila vazia 55 20 5 4 -1 3 1 2 posição do último início da fila Professor Ulisses Vasconcelos

5 Professor Ulisses Vasconcelos
FILA - Conceitos Fila de vetores - Retira Procedimento: Testamos se há elementos. Decrementamos o fim da fila (último). Salvamos o primeiro elemento em variável aux. Empuramos tudo para a frente. 55 4 12 89 24 55 4 12 89 24 20 4 5 20 posição do último início da fila Professor Ulisses Vasconcelos

6 Professor Ulisses Vasconcelos
FILA - Conceitos Funcionamento de fila utilizando vetores - Declaração da fila const m = 50; type tipo_nodo=integer; fila=record primeiro:byte; ultimo:byte; elem:array[1..m] of tipo_nodo; end; m m Ultimo 3 2 1 Primeiro Professor Ulisses Vasconcelos

7 Professor Ulisses Vasconcelos
FILA - Conceitos Funcionamento de fila utilizando vetores - Inicialização da fila procedure cria_fila(var f:fila); begin f.primeiro:=0; f.ultimo:=-1; end; -1 Ultimo Primeiro Professor Ulisses Vasconcelos

8 Professor Ulisses Vasconcelos
Fila - Conceitos Inserção em fila de vertor Procedure push(var :fila;i:tipo_nodo); begin if f.ultimo=m then writeln(‘fila cheia’); else f.ultimo:=f.ultimo+1; f.elem[f.ultimo]:=i; end; M é uma contante com o valor máximo do vetor (4) -1 Ultimo 1 Primeiro elem Professor Ulisses Vasconcelos

9 Professor Ulisses Vasconcelos
FILA - Conceitos Exclusão em fila de vetor function pop(var f:fila):byte; begin if f.ultimo<f.primeiro then writeln(‘fila vazia’) else f.primeiro:=f.primeiro+1; end; end; m m Ultimo 3 2 1 2 1 Primeiro Professor Ulisses Vasconcelos

10 Professor Ulisses Vasconcelos
FILA - Ponteiros Declaração apontador = ^celula; celula = record item:integer; prox:apontador; end; tipofila=record frente:apontador; tras:apontador; end; Próximo Item Célula frente traz Ref. 0 Ref. 1 Ref. 0 Ref. 1 célula célula Professor Ulisses Vasconcelos

11 Professor Ulisses Vasconcelos
FILA - Ponteiros Frente Traz Inicialização procedure iniciafila(var fila:tipofila); var aux:apontador; begin new (aux); fila.frente:=aux; fila.tras:=fila.frente; fila.tras^.prox :=nil; end; Ref. 0 Ref. 0 aux Ref. 0 Item Próximo Ref. 0 NIL Professor Ulisses Vasconcelos

12 Professor Ulisses Vasconcelos
FILA - Ponteiros Verifica fila vazia function vazia(fila:tipofila):boolean; begin vazia:=fila.frente = fila.tras; end; Professor Ulisses Vasconcelos

13 Professor Ulisses Vasconcelos
FILA - Ponteiros Frente Traz Inserção procedure inserir(x:integer;var fila:tipofila); var aux:apontador; begin new (aux); fila.tras^.prox:=aux; aux^.prox := nil; aux^.item :=x; fila.tras := aux; end; Valor passado por parâmetro: 5 Ref. 0 Ref. 1 Ref. 0 aux: Ref. 1 Item Próximo Ref. 0 Item Próximo Ref. 1 Ref. 1 NIL 5 NIL Professor Ulisses Vasconcelos

14 Professor Ulisses Vasconcelos
FILA - Ponteiros Frente Traz Ref. 0 Ref. 1 Exclusão procedure retirar(var fila:tipofila); var aux:apontador; begin aux:=fila.frente^.prox; fila.frente^.prox := aux^.prox; if (fila.frente^.prox = nil ) then fila.tras := fila.frente; dispose(aux); end; Ref. 0 aux: Ref. 1 Item Próximo Ref. 0 Ref. 1 NIL 5 Item Próximo Ref. 1 NIL Professor Ulisses Vasconcelos


Carregar ppt "Professor Ulisses Vasconcelos"

Apresentações semelhantes


Anúncios Google