Você está aqui: Python ::: Estruturas de Dados ::: Filas |
Como criar uma fila em Python usando um vetor de inteiros e programação orientada a objetos - A classe FilaQuantidade de visualizações: 768 vezes |
Uma fila é uma estrutura de dados do tipo FIFO (First-In-First-Out), na qual o primeiro elemento a entrar na estrutura é o primeiro a ser removido. Há inúmeras formas de se implementar uma fila em Python. Nesta dica mostrarei como podemos realizar essa tarefa usando uma classe Fila, na qual usaremos um vetor redimensionável (criado a partir de um objeto List). Note que a nossa classe Fila possui os seguintes métodos enfileirar(), desenfileirar(), is_cheia(), is_vazia() e exibir(). Veja o código completo para a classe Fila: Código para fila.py: # definição da classe Fila class Fila: # construtor da classe def __init__(self, capacidade): # vetor usado para guardar os elementos self.elementos = [None] * capacidade # para controlar o início da fila self.inicio = 0 # para controlar o final da fila self.fim = 0 # para registrar o tamanho da fila self.tamanho = 0 # manter um registro da capacidade self.capacidade = capacidade # método que permite verificar se a fila está cheia def is_cheia(self): # a capacidade é igual ao tamanho da fila? return self.capacidade == self.tamanho # método que permite enfileirar um novo valor na fila def enfileirar(self, valor): # a fila está cheia? if self.is_cheia(): raise Exception("A fila está cheia") # insere o novo elemento no final da fila self.elementos[self.fim] = valor # ajusta a variável fim para a próxima posição self.fim += 1 # incrementa o tamanho da fila self.tamanho += 1 # mostra uma mensagem de sucesso para fins de depuração print("O valor {0} foi enfileirado.".format(valor)) # método que permite desenfileirar o elemento na frente da fila def desenfileirar(self): # a fila está vazia? if self.is_vazia(): raise Exception("A fila está vazia") # a fila não está vazia. Vamos retornar o elemento na frente valor = self.elementos[self.inicio] # inicio agora aponta para o próximo elemento self.inicio += 1 # depois da remoção a lista vai ficar vazia? if self.inicio == self.fim: self.inicio = 0 self.fim = 0 # diminuimos o tamanho da fila self.tamanho -= 1 # retorna o elemento removido return valor # método que permite verificar se a fila está vazia def is_vazia(self): # o tamanho da fila é 0? return self.tamanho == 0 # método que permite exibir o conteúdo da fila def exibir(self): if not self.is_vazia(): # varremos os elementos da fila print("Elementos na fila:", end=" ") for i in range(self.inicio, self.fim): print(self.elementos[i], end=" ") print("\nO elemento no início da fila é: {0}".format(self.elementos[self.inicio])) print("O elemento no final da fila é: {0}".format(self.elementos[self.fim - 1])) print("O índice do elemento no início da fila é: {0}".format(self.inicio)) print("O índice do elemento no final da fila é: {0}".format(self.fim - 1)) Código para principal.py: # vamos importar a classe Fila from fila import Fila # função principal do programa def main(): # vamos criar uma nova fila com capacidade para 10 elementos fila = Fila(10) # vamos enfileirar 4 valores if not fila.is_cheia(): fila.enfileirar(30) fila.enfileirar(19) fila.enfileirar(73) fila.enfileirar(58) else: print("A fila está cheia") # agora vamos exibir o conteúdo da fila if not fila.is_vazia(): fila.exibir() # vamos desenfileirar 3 valores if not fila.is_vazia(): valor = fila.desenfileirar() print("O valor {0} foi desenfileirado.".format(valor)) if not fila.is_vazia(): valor = fila.desenfileirar() print("O valor {0} foi desenfileirado.".format(valor)) if not fila.is_vazia(): valor = fila.desenfileirar() print("O valor {0} foi desenfileirado.".format(valor)) # agora vamos exibir o conteúdo da fila novamente if not fila.is_vazia(): fila.exibir() if __name__== "__main__": main() Ao executar este código Python nós teremos o seguinte resultado: O valor 30 foi enfileirado. O valor 19 foi enfileirado. O valor 73 foi enfileirado. O valor 58 foi enfileirado. Elementos na fila: 30 19 73 58 O elemento no início da fila é: 30 O elemento no final da fila é: 58 O índice do elemento no início da fila é: 0 O índice do elemento no final da fila é: 3 O valor 30 foi desenfileirado. O valor 19 foi desenfileirado. O valor 73 foi desenfileirado. Elementos na fila: 58 O elemento no início da fila é: 58 O elemento no final da fila é: 58 O índice do elemento no início da fila é: 3 O índice do elemento no final da fila é: 3 |
![]() |
Desafios, Exercícios e Algoritmos Resolvidos de Python |
Veja mais Dicas e truques de Python |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |