A fila é uma das estruturas de dados mais importantes em muitos algoritmos. É muito parecida com uma fila do dia a dia. O primeiro elemento adicionado à fila será o primeiro a ser “servido” e removido.
Imagine uma fila de formigas esperando um café. A primeira formiga na fila receberá o café e sairá dela, em seguida a próxima formiga receberá o café e também sairá, e assim por diante, até que não haja formigas esperando.
Declarar e utilizar uma fila na maioria das linguagens de programação costuma ser simples, pois muitas (como Python, C++, Java, etc.) já fornecem uma implementação pronta para esse tipo de estrutura. Ainda assim, podemos implementar nossa própria fila usando uma lista ligada. Consegue pensar em como fazer isso?
from queue import Queue
q = Queue() # Cria uma nova fila
q.put(1) # Adiciona 1 à frente da fila
q.put(2) # Adiciona 2 em seguida
q.put(3) # Adiciona 3 após 2
# Remove elementos da fila usando get()
print(q.get()) # imprime 1
print(q.get()) # imprime 2
print(q.get()) # imprime 3
Desafio: Simulação de Fila
Você está implementando um sistema que deve acompanhar os clientes na loja. Esse sistema precisa fazer duas coisas: adicionar um cliente à fila de espera e remover o primeiro cliente da fila quando ele for atendido. Cada vez que você remover alguém da fila, deve imprimir o nome dessa pessoa.
Entrada
A primeira linha da entrada contém um único inteiro n (1 ≤ n ≤ 100 000).
As próximas n linhas contêm operações — ou add ou pop:
A operação add é seguida por um nome, e você deve adicionar esse cliente à fila de espera.
A operação pop apenas contém o nome da operação, sem nada mais.
É garantido que sempre haverá alguém na fila antes de uma operação pop, então as operações são válidas.
Os nomes não excedem 20 símbolos.
Saída
Para cada operação pop, o programa deve imprimir o nome do cliente que estiver na frente da fila.
Exemplos
Entrada
Saída
9
add Steven
add Sam
pop
add Sergio
add Don
pop
add John
pop
pop