Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

Prévia do material em texto

FILA CIRCULAR 
Para eliminar o relativo desperdício de tempo da fila sequencial, ocasionado pelos deslocamentos dos 
elementos da fila às primeiras posições, utilizamos as filas circulares. Neste tipo não há preocupação para 
quando o ultimo elemento da fila atinge a posição máxima do vetor, pois o algoritmo implementado 
adquire o conceito de “circularidade”, onde a última posição é adjacente à primeira. Dessa forma, são os 
ponteiros, e não os elementos da fila que se movem em direção ao início do vetor. 
Os mesmos conceitos das filas simples são utilizados em filas circulares. A diferença é que, na fila circular, 
após os ponteiros alcançarem o final da estrutura (vetor), tenta-se ocupar os nodos inicias da estrutura 
(vetor), fazendo-se um “círculo”. 
 
 
Na fila circular com capacidade de no máximo m elementos, precisamos diferenciar quando a fila está vazia 
e quando a fila está cheia. Para isso, assumimos que exista uma variável qtd (quantidade) é incrementada 
ou decrementada sempre que se insere ou se retira elementos da fila respectivamente. 
Para criar a fila: 
 fim = primeiro = qtd = 0. 
Para verificar se a fila está cheia: 
 Se qtd = m então fila cheia. 
Para verifica se a fila está vazia: 
 Se qtd == 0 então fila vazia. 
 
Para inserir um elemento x na fila que não esteja cheia: 
 v[fim] = x 
 qtd = qtd + 1 
 fim = fim + 1 
 Se fim == m então fim = 0. 
Para retirar um elemento x da fila que não esteja vazia: 
 x = v[inicio] 
 qtd = qtd – 1 
 inicio = inicio + 1 
 Se inicio == m então inicio = 0 
 Retorne x. 
Observe que as variáveis fim e inicio são sempre verificadas após sofrerem o incremento. Isso pode ser 
evitado utilizando a operação de resto de divisão:

Mais conteúdos dessa disciplina