Você está na página 1de 21

Estruturas de Dados

Prof. Perini
Sistemas de Informação
Ciência da Computação
Disciplina: Estrutura de Dados
Filas

Profº José Carlos Perini


Fontes:
Apostila de Estruturas de Dados
Adaptado dos slides do Prof° Fábio L. R. Pelissoni
TAD: Filas

Definição

FILA é um Tipo Abstrato de Dados (TAD) que serve para


armazenar um conjunto de elementos, que funciona da
seguinte forma:

– Novos elementos sempre são inseridos no “fim” da Fila;

– Para remover um elemento da Fila, retirar sempre o seu 1°



elemento.

3
TAD: Filas
Exemplo

Fila de espera em um banco


último

4
TAD: Filas

Observações

1. Essa é a única forma de armazenar e recuperar em uma


fila (FIFO); não é permitido acesso randômico a nenhum
item específico;

2. Uma operação de recuperação remove um item da fila e


o destrói, se não for armazenado em algum outro lugar.
Assim, uma fila pode ficar vazia, porque todos os itens
foram removidos, muito embora o programa ainda esteja
em atividade.

5
TAD: Filas

Exemplos

- Fila de espera em aeroportos (uma fila para cada voo);


voo);
- Fila de impressão.

Para que serve uma FILA?


Para modelar situações onde é preciso armazenar um
conjunto ordenado de elementos, no qual o 1°
1° elemento a
entrar na FILA será também o 1°1° elemento a sair da
FILA, e assim por diante (FIFO – First In – First Out);

6
TAD: Filas

Operações

- Criar(F): cria uma FILA F vazia;

- Inserir(F, X): insere o elemento X na FILA F e X passa a ser


o último elemento na fila;

- Remover(F): remove o 1°
1° elemento da FILA F; o valor
deste elemento é retornado;

7
TAD: Filas

Operações

- Fila_Vazia
Fila_Vazia(F):
(F): retorna o valor VERDADEIRO se a FILA F
está vazia; retorna FALSO, caso contrário;

- Fila_Cheia
Fila_Cheia(F):
(F): retorna o valor VERDADEIRO se a FILA F
está cheia; retorna FALSO, caso contrário. Com alocação
dinâmica, essa operação não existe.

8
TAD: Filas

Implementação de uma FILA

• Para a implementação de uma FILA, usando uma


linguagem de programação, como o C, pode-
pode-se
implementá--la usando:
implementá

1-) Alocação Seqüencial e Estática de Memória


ou

2-) Alocação Dinâmica de Memória

9
TAD: Filas

Implementação com Alocação Dinâmica de


Memória

• Definição: Alocação Dinâmica


− As limitações de tamanho resultantes da utilização de
vetores de tamanho fixo na implementação de Filas
Estáticas podem ser contornadas pelo uso de estruturas
de dados alocadas dinamicamente;

− Todo o espaço de memória a ser utilizado (para


armazenar os elementos) é reservado (alocado) durante a
execução do programa

10
TAD: Filas
Implementação com Alocação Dinâmica de
Memória

• Definição de uma estrutura (struct


(struct)) para definir
um TAD Fila Dinâmica:
Dinâmica:

/* Definição da Fila Dinâmica – um campo com a informação


e um campo ponteiro para apontar para um próximo elemento
da Fila
Fila.. */

struct no {
int elem
elem;;
struct no *prox
*prox;;
}; 11
TAD: Filas
Implementação com Alocação Dinâmica de Memória

• Na definição da Fila Dinâmica um campo ponteiro prox


contém o endereço do próximo elemento da fila, em vez de
um inteiro contendo o índice dentro do vetor estático;

• Utilizamos os recursos de alocação dinâmica de memória


para implementar fila de forma dinâmica;

• Em vez de declarar um vetor para representar um conjunto


agregado de elementos, os elementos são alocados e
liberados, conforme a necessidade

12
TAD: Filas

Implementação com Alocação Dinâmica de Memória

• Elimina
Elimina--se a necessidade de declarar um conjunto de
elementos de tamanho fixo;

• Protótipos das operações de manipulação da Fila Dinâmica:


−void insere (no **i, no **f, int elem);
elem); // inclui um valor na fila
−int retira (no **i, no **f); // exclui um valor da fila
−void consulta (no *i); // mostra os valores da fila

13
TAD: Filas

Operações

- Exemplo de um “Teste de Mesa”

14
TAD: Fila Dinâmica

15
TAD: Fila Dinâmica
Função que verifica se a fila está vazia

16
TAD: Fila Dinâmica
Função que inclui um elemento na fila

17
TAD: Fila Dinâmica
Função que retira um elemento da fila

18
TAD: Fila Dinâmica
Função que consulta os elementos da fila

19
TAD: Fila Dinâmica
Testando as operações da fila

20
Exercícios Práticos
• Implementar a TAD FilaD
FilaD.h
.h com as funções da
fila.

• Fazer um programa para testar as funções, com


um menu para inserir, consultar , retirar os
elementos da fila e sair.

21

Você também pode gostar