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

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

Filas - Definição Uma fila possui o comportamento: O primeiro que chega é o primeiro que sai. O único elemento que pode ser removido da fila é o primeiro.

Apresentações semelhantes


Apresentação em tema: "Filas - Definição Uma fila possui o comportamento: O primeiro que chega é o primeiro que sai. O único elemento que pode ser removido da fila é o primeiro."— Transcrição da apresentação:

1 Filas - Definição Uma fila possui o comportamento: O primeiro que chega é o primeiro que sai. O único elemento que pode ser removido da fila é o primeiro que foi inserido, dentre os presentes na fila (que está no início da fila) Sem considerar aspectos de implementação o comportamento da fila pode ser especificada por 3 operações: insereNaFila: Insere um elemento na fila removeDaFila: remove o primeiro elemento que foi inserido na pilha filaVazia: operação lógica: retorna verdadeiro se nã há nenhum elemento na fila e falso caso contrário.

2 Filas – Fila Vazia A operação filaVazia é necessária porque a operação removeDaFila só pode ser executada se a pilha não estiver vazia. Note que a única restrição de comportamento é que o único elemento que pode ser removido é o primeiro que foi inserido.

3 Implementação de uma fila:
Filas - Implementação Implementação de uma fila: Definir o tipo básico Identificar possíveis limitações da forma de implementação Definir uma forma de sabermos sempre quem foi o primeiro elemento inserido Implementar as funções insereNaFila, removeDaFila, filaVazia Implementar possíveis operações auxiliares

4 Filas – Implementação com Vetores
Exemplo de implementação em C usando vetores Tipo básico: inteiro O tamanho de um vetor é estaticamente definido: a fila pode “encher” O primeiro elemento da fila será sempre “lembrado” por uma variável auxiliar que guardará seu índice (inicio) A variável início não é suficiente para manter a ordem da fila pois não saberíamos onde inserir um novo elemento (fim da fila): Usaremos uma outra variável (fim) para lembrarmos onde é o fim da fila Quando inserimos um elemento, o fim da fila deve ser atualizado Quando removemos um elemento o inicio da fila deve ser atualizado

5 Filas – Implementação com Vetores
#define true 1 #define false 0 #define TamMaximoFila 100 #define CodigoFilaVazia –99999 typedef struct { int fila[TamMaximoFila]; int inicio,fim; } TadFila; Especificação das operações: inicializaFila(TadFila *q); filaCheia(TadFila q); insereNaFila(TadFila *q, int elem); filaVazia(TadFila q); removeDaFila(TadFila *q, int *elem); //o elemento removido é retornado pelo parâmetro elem. A funcao retorna true em caso de sucesso ou false caso contrário.

6 Filas – Implementação Implementação 1 Inicialização da fila:
Inicio = 0 Fim = -1 Condição de fila vazia: Fim<Inicio Condição de FilaCheia: Fim= MAXFILA Inserir: Se a fila não estiver cheia Incrementa Fim Insere na posição Fim Remover: Se a fila não estiver vazia Remove da posição Inicio Incrementa Inicio

7 Exemplo: TamMaximoFila = 3
Filas - Implementação Exemplo: TamMaximoFila = 3 Início Fim fila 1 2 InicializaFila -1 - Insere 10 10 Insere 20 20 Insere 30 30 Remove Insere 40 Fila Cheia!

8 Filas - Implementação Limitação da Fila em arranjo: Embora a posição 0 esteja vaga, a solução acusa fila cheia. Uma solução viável para este problema é a implementação de fila com arranjos circulares

9 Filas com Arranjo circular
Um arranjo circular pode ser implementado por meio de uma operação chamada sucessor O sucessor do ultimo elemento do arranjo é o primeiro elemento Para um arranjo de índices i que vão de 0 a n-1 Sucessor (i) = (i+1) mod n Exemplo: Para n=3 temos Sucessor(0) = 1 Sucessor(1) = 2 Sucessor(2) = 0 2 1

10 Filas com Arranjo Circular
Implementação 2 Inicialização da fila: Inicio = 0 Fim = 0 Condição de fila vazia: Fim = Inicio Condição de fila cheia: sucessor(Fim)= Inicio Insere: Se a fila não estiver cheia Insere na posição Fim Fim = sucessor(Fim) Remove: Se a fila não estiver vazia Remove da posição Inicio Inicio=sucessor(inicio)

11 Filas com Arranjo Circular
Exemplo: TamMaximoFila = 3 Início Fim fila 1 2 InicializaFila - Insere 10 10 Insere 20 20 Insere 30 FilaCheia Remove 30 Insere 40 Fila cheia

12 Filas - Exercício Construa uma programa que simule uma fila de atendimento de um banco. A cada unidade de tempo chegam ao banco um número de pessoas entre 0 e 10 pessoas


Carregar ppt "Filas - Definição Uma fila possui o comportamento: O primeiro que chega é o primeiro que sai. O único elemento que pode ser removido da fila é o primeiro."

Apresentações semelhantes


Anúncios Google