Você está na página 1de 14

Curso de Ciência da

Computação

Estruturas de dados
Filas (Queues)

alexandre.perin@ifsc.edu.br

Lages (SC).
Filas

• Sumário
o Introdução
o Definição
o Operações
o Funcionamento
o Implementação
o Exercícios

2
Filas

• Introdução
o É uma estrutura de dados linear, utilizada em diversos
problemas:
▪ Controle de documentos para impressão

▪ Buffer para gravação de dados em mídia

▪ Fila de processos aguardando pelo uso da CPU

▪ ...

▪ Fila de pessoas para entrada em uma agência bancária ou para


serem atendidas em um banco

▪ Fila de produtos para serem despachados e enviados para


destinatário

3
Filas
• Definição
o Uma fila ou queue é uma estrutura de dados linear, cujo
acesso se dá através da regra
▪ Primeiro que chega (entra) é o primeiro a ser atendido
(sai): First In First Out (FIFO)

4
Filas
o Operações
• Há duas principais
o Insere( elemento ): insere um elemento na fila

o Remove( ): remove e retorna o elemento removido

• Há outras complementares
o Número de elementos presentes na fila

o Verificar se a fila está ou não vazia

o Limpar a fila

o ...

5
Filas
• Funcionamento
o Insere( elemento ) - Insere um elemento na fila

10 20 30 10 20 30
Insere(30)

Depois
Antes

6
Filas
• Funcionamento
o Remove( ) - Remove um elemento da fila

10 20 30 10 20 30

Remove( )

Antes Depois

7
Filas
o Exemplo do funcionamento de uma fila usando alocação
estática de memória (vetor)
• Link:
https://www.cs.usfca.edu/~galles/visualization/QueueArray.html

8
Filas
o Exemplo do funcionamento de uma fila usando alocação
dinâmica de memória (lista ligada ou encadeada)
• Link:
https://www.cs.usfca.edu/~galles/visualization/QueueLL.html

9
Filas
o Implementação
• Através de memória estática (vetor)
▪ É importante observar e controlar os limites da fila (vetor),
de maneira a evitar acessos a posições de memória não
alocadas.

• Através de memória dinâmica (lista encadeada ou ligada)


▪ É importante observar e controlar os ponteiros para os
nodos da fila, nas operações de insere e retira.

10
Filas
o As filas serão implementadas através de alocação dinâmica
de memória
• Para atender à regra FIFO, as operações de insere e retira
devem ser realizadas em diferentes extremidade da estrutura

11
Filas
o Insere e Retira em pseudocódigo
Método insere(Nodo novoElemento)
Início
Se fila está vazia Então
fila <- novoNodo
Senão
novoNodo.prox <- fila
fila <- novoNodo
Fimse
Fim

Método Nodo remove()


Início
Se fila está vazia Então
Escreva “fila vazia!"
Senão
Navega na fila e remove último
Fimse
Fim
12
Filas
Exercícios
1. Considere a fila (10, 50, 5). Execute as operações abaixo na fila A
e após a execução de cada operação desenhe como a fila ficou.
As operações são : insere(10), insere(20), remove, insere(30),
remove

2. Implemente uma fila de inteiros utilizando memória dinâmica.

13
Filas
o Síntese
• Filas são estruturas de dados lineares e simples, usadas em
diversos problemas
▪ Por isso, algumas linguagens já dispõem desta estrutura
▪ Em Java existe a classe Queue
• Sua regra estabelece que o primeiro a entrar é o primeiro a
sair (FIFO)
• Suas operações básicas são: insere e retira
• Podem ser implementadas
▪ Alocação estática ou por contiguidade (vetor)
▪ Alocação dinâmica de memória (listas encadeadas ou
ligadas)
14

Você também pode gostar