Desenvolva um algoritmo de PILHA e FILA em Python, obedecendo as regras a seguir:
O programa deve ser iniciado perguntando ao usuário, qual estrutura ele deseja (PILHA ou FILA).
Após a escolha, deverá ser exibido um menu com 3 opções: Adicionar número, excluir número e sair.
Os números da estrutura devem ser exibidos após qualquer operação.
Se for escolhida a opção de exclusão e o número não existir, deverá ser exibida uma mensagem.
As estruturas não devem conter um limite.
O menu deve ser obrigatoriamente exibido após cada operação da estrutura.
Respostas
Resposta:
Explicação:
def add(list):
n = int(input('Numero: '))
list.append(n)
return list
def delete(list, structure):
try:
if(structure == '1'):
structure_name = 'Pilha'
list.pop()
else:
structure_name = 'Fila'
list.pop(0)
except IndexError:
show_result('Erro: {} vazia!'.format(structure_name))
return list
def controller(list, structure, operation):
if(operation == '1'):
return add(list)
if(operation == '2'):
return delete(list, structure)
def get_operation():
print('--------------------------------------------------')
print('1 - ADICIONAR NUMERO')
print('2 - EXCUIR NUMERO')
print('S - SAIR')
print('--------------------------------------------------')
operation = input('Operaçao desejada: ')
if(operation not in ('1', '2', 's', 'S')):
show_result('Erro: Opção inválida!')
return get_operation()
return operation
def get_structure():
print('--------------------------------------------------')
print('1 - PILHA')
print('2 - FILA')
print('--------------------------------------------------')
structure = input('Estrutura desejada: ')
if(structure not in ('1', '2')):
show_result('Erro: Opção inválida!')
return get_structure()
return structure
def show_result(result):
print('==================================================')
print(result)
print('==================================================')
def show_structure(list, structure):
structure_name = 'Pilha' if structure == '1' else 'Fila'
show_result('{}: {}'.format(structure_name, list))
if __name__ == '__main__':
list = []
structure = get_structure()
while(True):
operation = get_operation()
if(operation in ('s', 'S')):
break
list = controller(list, structure, operation)
show_structure(list, structure)