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