14
Professor Ulisses Vasconcelos Estrutura de dados Aula 03 - Filas

Professor Ulisses Vasconcelos Estrutura de dados Aula 03 - Filas

Embed Size (px)

Citation preview

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

Professor Ulisses Vasconcelos

Estrutura de dadosAula 03 - Filas

Page 2: Professor Ulisses Vasconcelos Estrutura de dados Aula 03 - Filas

Professor Ulisses Vasconcelos

FILAConceito InserçãoRemoção

Page 3: Professor Ulisses Vasconcelos Estrutura de dados Aula 03 - Filas

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

Page 4: Professor Ulisses Vasconcelos Estrutura de dados Aula 03 - Filas

Professor Ulisses Vasconcelos

FILA - ConceitosFila 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.

-120554

1289

01234

24

5

Filacheia

Filavazia

posição doúltimo

início da fila

Page 5: Professor Ulisses Vasconcelos Estrutura de dados Aula 03 - Filas

Professor Ulisses Vasconcelos

FILA - ConceitosFila de vetores - RetiraProcedimento:

Testamos se há elementos.

Decrementamos o fim da fila (último).

Salvamos o primeiro elemento em variável aux.

Empuramos tudo para a frente.

5420554128924

554128924

20

início da filaposição doúltimo

Page 6: Professor Ulisses Vasconcelos Estrutura de dados Aula 03 - Filas

Professor Ulisses Vasconcelos

FILA - Conceitos Funcionamento de fila utilizando vetores -

Declaração da filaconst m = 50;

type tipo_nodo=integer;fila=record primeiro:byte;

ultimo:byte; elem:array[1..m] of tipo_nodo;

end;

m

0 Primeiro

Ultimo

1

2

3

m

Page 7: Professor Ulisses Vasconcelos Estrutura de dados Aula 03 - Filas

Professor Ulisses Vasconcelos

FILA - Conceitos Funcionamento de fila utilizando

vetores - Inicialização da filaprocedure cria_fila(var

f:fila); begin f.primeiro:=0; f.ultimo:=-1; end;

-1

0 Primeiro

Ultimo

Page 8: Professor Ulisses Vasconcelos Estrutura de dados Aula 03 - Filas

Professor Ulisses Vasconcelos

Fila - Conceitos Inserção em fila de vertorProcedure push(var :fila;i:tipo_nodo); begin if f.ultimo=m then writeln(‘fila cheia’); else begin f.ultimo:=f.ultimo+1; f.elem[f.ultimo]:=i; end; end;

-1

0

Ultimo

Primeiro

M é uma contante com o valor máximo do vetor (4)

elem

0

1

Page 9: Professor Ulisses Vasconcelos Estrutura de dados Aula 03 - Filas

Professor Ulisses Vasconcelos

FILA - Conceitos Exclusão em fila de vetorfunction pop(var f:fila):byte; begin if f.ultimo<f.primeiro then writeln(‘fila vazia’) else begin f.primeiro:=f.primeiro+1; end; end;

m

1

Ultimo

1

2

3

m

Primeiro2

Page 10: Professor Ulisses Vasconcelos Estrutura de dados Aula 03 - Filas

Professor Ulisses Vasconcelos

FILA - Ponteiros Declaraçãoapontador =

^celula;celula = recorditem:integer;prox:apontador;end;tipofila=recordfrente:apontador;tras:apontador;end;

Célula

Item

Próx

imo

fren

te

traz

célulaRef. 0

célulaRef. 1

Ref. 0 Ref. 1

Page 11: Professor Ulisses Vasconcelos Estrutura de dados Aula 03 - Filas

Professor Ulisses Vasconcelos

FILA - Ponteiros Inicializaçãoprocedure iniciafila(var

fila:tipofila);varaux:apontador;beginnew (aux);fila.frente:=aux;fila.tras:=fila.frente;fila.tras^.prox :=nil;end;

Fren

te

Traz

aux Ref. 0

Item

Próx

imoRef. 0

Ref. 0 Ref. 0

NIL

Page 12: Professor Ulisses Vasconcelos Estrutura de dados Aula 03 - Filas

Professor Ulisses Vasconcelos

FILA - PonteirosVerifica fila vaziafunction vazia(fila:tipofila):boolean;

beginvazia:=fila.frente = fila.tras;end;

Page 13: Professor Ulisses Vasconcelos Estrutura de dados Aula 03 - Filas

Professor Ulisses Vasconcelos

FILA - Ponteiros Inserçãoprocedure inserir(x:integer;var

fila:tipofila);var aux:apontador;beginnew (aux);fila.tras^.prox:=aux;aux^.prox := nil;aux^.item :=x;fila.tras := aux;end;

Fren

te

Traz

Item

Próx

imoRef. 0

Ref. 0 Ref. 0

NIL

Item

Próx

imoRef. 1

aux: Ref. 1

Ref. 1

NIL

Valor passado por parâmetro: 5

5

Ref. 1

Page 14: Professor Ulisses Vasconcelos Estrutura de dados Aula 03 - Filas

Professor Ulisses Vasconcelos

FILA - Ponteiros Exclusãoprocedure retirar(var fila:tipofila);

varaux:apontador;begin aux:=fila.frente^.prox; fila.frente^.prox := aux^.prox; if (fila.frente^.prox = nil ) then

fila.tras := fila.frente; dispose(aux);end;

Fren

te

Traz

Item

Próx

imo

Ref. 0

Ref. 0 Ref. 1

Ref. 1

5

Item

Próx

imoRef. 1

NIL

aux: Ref. 1

NIL

Ref. 0