Analise os códigos a seguir:Código 01import java.util.Stack;...
Código 01 import java.util.Stack; public class Pilha { public static void main(String[] args) { Stack<Integer> pilha = new Stack<>(); pilha.push(5); pilha.push(3); pilha.push(8); pilha.push(1); Stack<Integer> pilhaOrdenada = new Stack<>(); while (!pilha.isEmpty()) { int temp = pilha.pop(); while (!pilhaOrdenada.isEmpty() && temp > pilhaOrdenada.peek()) { pilha.push(pilhaOrdenada.pop()); } pilhaOrdenada.push(temp); } System.out.println("Pilha Ordenada: " + pilhaOrdenada); } }
Código 02
import java.util.Stack; public class Pilha { public static void main(String[] args) { Stack<Integer> pilha = new Stack<>(); pilha.push(5); pilha.push(3); pilha.push(8); pilha.push(1); Stack<Integer> pilhaOrdenada = new Stack<>(); while (!pilha.isEmpty()) { int temp = pilha.pop(); while (!pilhaOrdenada.isEmpty() && temp < pilhaOrdenada.peek()) { pilha.push(pilhaOrdenada.pop()); } pilhaOrdenada.push(temp); } System.out.println("Pilha Ordenada: " + pilhaOrdenada); } }
Ao comparar os dois códigos apresentados, assinale a alternativa correta.
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Gabarito: B
Fundamento decisivo: A troca entre `>` e `<` no laço interno define o sentido do reposicionamento dos elementos e, por consequência, a ordem final da pilha auxiliar.
- Em algoritmos com pilha auxiliar, observe a condição do laço interno: ela define quais elementos saem do topo antes da inserção do atual.
- Quando a questão perguntar a ordem final, confira a estrutura resultante impressa, não apenas a sequência de `pop` durante a execução.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo