• Nenhum resultado encontrado

Algoritmos e Estruturas de Dados I FILAS. Prof. Tiago Eugenio de Melo

N/A
N/A
Protected

Academic year: 2022

Share "Algoritmos e Estruturas de Dados I FILAS. Prof. Tiago Eugenio de Melo"

Copied!
64
0
0

Texto

(1)

Algoritmos e Estruturas de Dados I

FILAS

Prof. Tiago Eugenio de Melo tmelo@uea.edu.br

www.tiagodemelo.info

(2)

Observações

O conteúdo dessa aula é parcialmente proveniente do Capítulo 6 do livro “Data Structures and Algorithms in Python”.

As palavras com a fonte Courier indicam uma palavra-reservada da linguagem de

programação.

2 / 14

(3)

Introdução

(4)

Introdução

Coleção de objetos que são inseridos e

removidos de acordo com o princípio FIFO (first in, first out).

3 / 14

(5)

Introdução

Coleção de objetos que são inseridos e

removidos de acordo com o princípio FIFO (first in, first out).

Os elementos podem ser inseridos a qualquer momento, mas existe uma ordem na remoção dos elementos, pois sairá da fila o elemento mais antigo.

(6)

Introdução

A noção de fila é usada no nosso cotidiano:

Lojas

Cinema

Restaurante

Computadores

Fila de impressão.

Servidor web.

Etc.

4 / 14

(7)

TAD Fila

(8)

TAD Fila

TAD que representa uma fila mantém os elementos em uma sequência.

5 / 14

(9)

TAD Fila

TAD que representa uma fila mantém os elementos em uma sequência.

As operações de acesso e a remoção de

elementos são restritas ao primeiro elemento.

(10)

TAD Fila

TAD que representa uma fila mantém os elementos em uma sequência.

As operações de acesso e a remoção de

elementos são restritas ao primeiro elemento.

A operação de inserção é restrita ao final da fila.

5 / 14

(11)

TAD Fila

Uma fila Q deverá ter os seguintes métodos:

(12)

TAD Fila

Uma fila Q deverá ter os seguintes métodos:

Q.enqueue (e)

Adiciona o elemento e no final da fila Q.

6 / 14

(13)

TAD Fila

Uma fila Q deverá ter os seguintes métodos:

Q.enqueue (e)

Adiciona o elemento e no final da fila Q.

Q.dequeue ( )

Remove e retorna o primeiro elemento da fila Q.

Ocorre um erro se a fila estiver vazia.

(14)

TAD Fila

Outros métodos adicionais:

7 / 14

(15)

TAD Fila

Outros métodos adicionais:

Q.first ( )

Retorna o primeiro elemento da fila Q, mas sem removê- lo.

Ocorrerá um erro se a fila Q estiver vazia.

(16)

TAD Fila

Outros métodos adicionais:

Q.first ( )

Retorna o primeiro elemento da fila Q, mas sem removê- lo.

Ocorrerá um erro se a fila Q estiver vazia.

Q.is_empty ( )

Retorna True se a fila Q estiver vazia.

7 / 14

(17)

TAD Fila

Outros métodos adicionais:

Q.first ( )

Retorna o primeiro elemento da fila Q, mas sem removê-lo.

Ocorrerá um erro se a fila Q estiver vazia.

Q.is_empty ( )

Retorna True se a fila Q estiver vazia.

len (Q)

Retorna o número de elementos da fila Q.

Em Python, nós podemos implementar isto como um tipo especial com o método __len__.

(18)

TAD Fila (exemplo)

8 / 14

(19)

TAD Fila (exemplo)

(20)

TAD Fila (exemplo)

8 / 14

(21)

TAD Fila (exemplo)

(22)

TAD Fila (exemplo)

8 / 14

(23)

TAD Fila (exemplo)

(24)

TAD Fila (exemplo)

8 / 14

(25)

TAD Fila (exemplo)

(26)

TAD Fila (exemplo)

8 / 14

(27)

TAD Fila (exemplo)

(28)

TAD Fila (exemplo)

8 / 14

(29)

TAD Fila (exemplo)

(30)

TAD Fila (exemplo)

8 / 14

(31)

TAD Fila (exemplo)

(32)

TAD Fila (exemplo)

8 / 14

(33)

Fila

(34)

Fila

10

insere (10)

último primeiro

9 / 14

(35)

Fila

10

insere (10)

último primeiro

10 20

insere (20)

último primeiro

(36)

Fila

10

insere (10)

último primeiro

10 20

insere (20)

último primeiro

10 20 30

insere (30)

último primeiro

9 / 14

(37)

Fila

10

insere (10)

último primeiro

10 20

insere (20)

último primeiro

10 20 30

insere (30)

último primeiro

20 30

remove ( )

(38)

Fila

10

insere (10)

último primeiro

10 20

insere (20)

último primeiro

10 20 30

insere (30)

último primeiro

20 30

remove ( )

último primeiro

20 30 40

insere (40)

último primeiro

9 / 14

(39)

Fila

10

insere (10)

último primeiro

10 20

insere (20)

último primeiro

10 20 30

insere (30)

último primeiro

20 30

remove ( )

20 30 40

insere (40)

último primeiro

20 30 40 50

insere (50)

último primeiro

(40)

Fila

10

insere (10)

último primeiro

10 20

insere (20)

último primeiro

10 20 30

insere (30)

último primeiro

20 30

remove ( )

último primeiro

20 30 40

insere (40)

último primeiro

20 30 40 50

insere (50)

último primeiro

Como seria possível inserir um novo elemento?

9 / 14

(41)

Fila

10

insere (10)

último primeiro

10 20

insere (20)

último primeiro

10 20 30

insere (30)

último primeiro

20 30

remove ( )

20 30 40

insere (40)

último primeiro

20 30 40 50

insere (50)

último primeiro

Como seria possível inserir um novo elemento?

Fila Circular!

(42)

Fila Circular

10 / 14

(43)

Fila Circular

Para evitar problemas de não ser capaz de

inserir mais elementos na fila, mesmo quando ela não está cheia, as referências primeiro e último circundam até o início do vetor,

resultando numa fila circular.

(44)

Fila Circular

Para evitar problemas de não ser capaz de

inserir mais elementos na fila, mesmo quando ela não está cheia, as referências primeiro e último circundam até o início do vetor,

resultando numa fila circular.

20 30 40 50

insere (50)

último primeiro

10 / 14

(45)

Fila Circular

Para evitar problemas de não ser capaz de

inserir mais elementos na fila, mesmo quando ela não está cheia, as referências primeiro e último circundam até o início do vetor,

resultando numa fila circular.

60 20 30 40 50

insere (60)

primeiro último

20 30 40 50

insere (50)

último primeiro

(46)

Fila Circular

Para evitar problemas de não ser capaz de

inserir mais elementos na fila, mesmo quando ela não está cheia, as referências primeiro e último circundam até o início do vetor,

resultando numa fila circular.

60 20 30 40 50

insere (60)

primeiro último

20 30 40 50

insere (50)

último primeiro

10 / 14

(47)

Fila Circular

(48)

Fila Circular

12 / 14

(49)

Fila Circular

Implementar uma fila circular não é difícil.

(50)

Fila Circular

Implementar uma fila circular não é difícil.

Basta usar a seguinte aritmética:

12 / 14

(51)

Fila Circular

Implementar uma fila circular não é difícil.

Basta usar a seguinte aritmética:

f = (f + 1) % N

(52)

Fila Circular

Implementar uma fila circular não é difícil.

Basta usar a seguinte aritmética:

f = (f + 1) % N

Exemplo:

Lista de tamanho (N) igual a 10 e índice do primeiro igual a 7.

12 / 14

(53)

Fila Circular

Implementar uma fila circular não é difícil.

Basta usar a seguinte aritmética:

f = (f + 1) % N

Exemplo:

Lista de tamanho (N) igual a 10 e índice do primeiro igual a 7.

Para avançar, bastaria calcular f = (7 + 1) % 10 que é igual a 8. O que seria natural.

(54)

Fila Circular

Implementar uma fila circular não é difícil.

Basta usar a seguinte aritmética:

f = (f + 1) % N

Exemplo:

Lista de tamanho (N) igual a 10 e índice do primeiro igual a 7.

Para avançar, bastaria calcular f = (7 + 1) % 10 que é igual a 8. O que seria natural.

Porém, quando o índice for 9, nós podemos calcular (9 + 1)

% 10 que levará ao índice 0.

12 / 14

(55)

TAD Fila Circular

(56)

TAD Fila Circular

13 / 14

(57)

TAD Fila Circular

(58)

TAD Fila Circular

13 / 14

(59)

TAD Fila Circular

(60)

TAD Fila Circular

13 / 14

(61)

TAD Fila Circular

(62)

TAD Fila Circular

14 / 14

(63)

TAD Fila Circular

(64)

TAD Fila Circular

14 / 14

Referências

Documentos relacionados

Dessa forma, os documentos foram analisados quanto aos tipos de projetos residenciais que se aplicam (Triagem); quais são os conteúdos mínimos indicados para

Executado pelos órgãos da DER/DF e a NOVACAP, o projeto de Retrofit aplicado à obra do Viaduto sobre a Galeria dos Estados visa em garantir mais segurança para os

Outras atividades como essa questão podem ser propostas, mas lembramos que não interessa tanto, nesse caso, a realização de muitos cálculos, quanto, por exemplo,

As quinolonas já têm sido relatadas como seguras para o tratamento da otite, sem apresentar sinais de ototoxicidade nos animais (GOTTHELF, 2004), e não foram observados

Observações como esta ganham peso ainda maior quando se leva em conta que, num país desprovido de cultura científica, os veículos de comunicação representam o canal mais

É relevante, ainda, considerar que os termos “reciclagem/ formação” indiciam a vontade que o especialista, reconhecido como portador de um saber, tem de

Quase todos estão de acordo quando afirmam que o trabalho com informação não é exclusivo de uma área profissional, e com a idéia de uma crescente integração de

O comparativo da participação dos veículos em acidentes de trânsito consiste na diferença percentual entre os anos de 2011 e 2010. Destaca-se a participação da