Filas – Python
Fila
Definição: Uma fila é uma estrutura de dados dinâmica que admite remoção de elementos e inserção de novos objetos. Mais especificamente, uma fila (= queue) é uma estrutura sujeita à seguinte regra de operação: sempre que houver uma remoção, o elemento removido é o que está na estrutura há mais tempo.
Em outras palavras, o primeiro objeto inserido na fila é também o primeiro a ser removido. Essa política é conhecida pela sigla FIFO (= First-In-First-Out).
Operações usuais:
- inserir(): insere um elemento no fim da fila;
- remover(): remove o primeiro elemento da fila;
- empty(): verifica se a fila está vazia.
Exemplo: Implemente um programa de gerenciamento de duas filas em um supermercado: Prioritária (idosos e gestantes) e Normal. A saída das pessoas da fila devem ocorrer da seguinte forma: a cada duas pessoas que saem da fila prioritária, uma sai da fila normal.
Primeiramente você deverá criar a classe Fila:
class Fila():
def __init__(self):
self.data = []
def inserir(self, x):
self.data.append(x)
def remover(self):
if len(self.data) > 0:
return self.data.pop(0)
def top(self):
if len(self.data) > 0:
return self.data[0]
def empty(self):
return not len(self.data) > 0
Definiremos dois Objetos “p” e “n” para as filas, e uma função “sair()” para gerenciar as saídas das filas.
p = Fila() # Objeto Fila prioritária
n = Fila() # Objeto Fila normal
aux = 0
def sair():
global aux
if p.empty():
aux = 0
n.remover()
if n.empty():
aux = aux + 1
p.remover()
if (aux < 2):
aux = aux + 1
p.remover()
else:
aux = 0
n.remover()
Atribuiremos dados de exemplos e verificações.
#Dados iniciais exemplos de entradas nas filas
for k in [11,12,13,14,15,16,17,18,19,20]:
n.inserir(k)
for k in [61,62,63,64,65,66,67,68]:
p.inserir(k)
#Exibe o próximo a sair da fila
print("P: ",p.top()," - N: ",n.top())
#retira elementos da fila (Para cada 2 elementos da prioritária sairá 1 da normal) sair()
Download: http://valci.com.br/download/notebook/Fila-Gerenciar_duas_filas_de_supermercado.ipynb
