Bom dia pessoal!
Estou com dificuldades para resolver esta questão:
Vimos no nosso curso que Python já é dotado da estrutura Lista, através de sua classe list. Usamos então as listas predefinidas de Python para implementar Pilhas e Filas. No algoritmo a seguir, P e F são da classe list. P será tratada como uma pilha onde o topo é o último elemento na ordem de leitura; F será tratada como uma fila onde o início é o primeiro elemento inserido na mesma;
Algoritmo
1 - Construir a lista P de números reais (numa quantidade qualquer) lendo do teclado seus itens fornecidos numa única linha;
2 - Escrever P;
3 - Retirar sequencialmente os elementos de P, inserindo-os um a um na fila F;
4 - Escrever F e P.
Fim-Algoritmo.
Acho que estou complicando o código:
pilha_aux_Numeros =[]
P1 = []
P2 = []
P3 = []
F = []
#n = 1
def Push(n, p = P1):p.append(n)
def Pop(p = P1):return p.pop()
pilha_aux_Numeros = input('Digite os itens separados por vírgula:\n- Números: ')
pilha_aux_Numeros = pilha_aux_Numeros.split(',')
for i in range(len(pilha_aux_Numeros)):
Push(pilha_aux_Numeros[i],P1)
for i in range(len(pilha_aux_Numeros)):
P1[i] = Pop(pilha_aux_Numeros)
pilha_aux_Numeros = P1
print('')
print('Pilha P:',P1)
print('')
def tamanhoPilha(p) :
return len(p)
def ehNumerico(x):
try:
teste = float(x)
except:
return False
return True
def indice(pos): #Retorna a posição dos índices um a um no loop/while
if (pos==1):return '1º'
print('')
if (pos==2):return '2º'
if (pos==3):return '3º'
if (pos==4):return '4º'
if (pos==5):return '5º'
else:return '6º'
def Desempilhar(p):
return p.pop(-1)
pos=1
while pos<7:
print (indice(pos)+' item a ser retirado de P inserido em F: ')
item = input('- Número: ')
pos += 1
Push(item,P1)
print('')
while tamanhoPilha(P1)>0:
item = Pop(P1)
ehNumerico(item),Push(item, pilha_aux_Numeros)
#else:Push(item, pilha_aux_Numeros)
while tamanhoPilha(pilha_aux_Numeros)>0:
Push(Desempilhar(pilha_aux_Numeros),P2)
print('')
print('Pilha P atualizada P: ',P2)
while tamanhoPilha(pilha_aux_Numeros )>0:
Push(Desempilhar(pilha_aux_Numeros ),P3)
print('')
print('Fila F = ',P3)
Digite os itens separados por vírgula:
- Números: 1,2,3,4,5,6
Pilha P: ['6', '5', '4', '3', '2', '1']
1º item a ser retirado de P inserido em F:
- Número: 6
2º item a ser retirado de P inserido em F:
- Número: 5
3º item a ser retirado de P inserido em F:
- Número: 4
4º item a ser retirado de P inserido em F:
- Número: 3
5º item a ser retirado de P inserido em F:
- Número: 2
6º item a ser retirado de P inserido em F:
- Número: 1
(Rodando só dá isso!)
Fico muito grato quem puder tirar essa dúvida... Uma solução mais simples....