Carregando...
Carregando...
Ajude a melhorar a plataforma
Considere o seguinte programa em Python:
classPilha():def__init__(self): self.data =[]defpush(self, x): self.data.append(x)defpop(self):iflen(self.data)>0:return self.data.pop(-1)defempty(self):returnlen(self.data)>0 p = Pilha() q = Pilha()for i inrange(5):if i %2==0: p.push(i)else: q.push(i)while p.empty(): q.push(p.pop())while q.empty():print(q.pop())
O programa irá imprimir, nesta ordem:
Explique melhor esta questão
Abre o Tutor com o enunciado e as alternativas já no campo — você revisa e envia.
Esta questão foi verificada por um de nossos administradores.
Alternativa B - Os números 0, 2, 4, 3 e 1.
O código apresenta uma simulação de manipulação de pilhas (LIFO - Last In, First Out). Para resolver a questão, é necessário rastrear o estado das pilhas p e q durante as operações de push e pop.
i=0 (par): p.push(0) -> p: [0]i=1 (ímpar): q.push(1) -> q: [1]i=2 (par): p.push(2) -> p: [0, 2]i=3 (ímpar): q.push(3) -> q: [1, 3]i=4 (par): p.push(4) -> p: [0, 2, 4]while p.empty()): O código move elementos de p para q. Como é uma pilha, saem na ordem inversa:
p.pop() remove 4 -> q.push(4) -> q: [1, 3, 4]p.pop() remove 2 -> q.push(2) -> q: [1, 3, 4, 2]p.pop() remove 0 -> q.push(0) -> q: [1, 3, 4, 2, 0]while q.empty()): Imprime os elementos de q (também uma pilha, saindo do último para o primeiro):
| Passo | Pilha p | Pilha q | Saída | | :--- | :--- | :--- | :--- | | Após Inserção | [0, 2, 4] | [1, 3] | - | | Após Transferência | [] | [1, 3, 4, 2, 0] | - | | Impressão Final | [] | [] | 0, 2, 4, 3, 1 |
Seguindo estritamente a lógica LIFO, onde o último a entrar em q (o 0 vindo de p) é o primeiro a sair, a sequência correta é 0, 2, 4, 3, 1.
Alternativa B.