Intern
O que são pilhas?
sobes.tech IA
Resposta da IA
A pilha é uma estrutura de dados que funciona segundo o princípio LIFO (Last-In, First-Out). Os elementos são adicionados e removidos apenas de uma extremidade, chamada vértice da pilha.
Operações principais:
push: adicionar um elemento ao topo da pilha.pop: remover um elemento do topo da pilha e devolvê-lo.peek: obter o valor do elemento no topo da pilha sem removê-lo.isEmpty: verificar se a pilha está vazia.
Em Java, a pilha é representada pela classe Stack, que é uma subclasse de Vector.
// Exemplo de uso de Stack
import java.util.Stack;
public class StackExample {
public static void main(String[] args) {
Stack<String> stack = new Stack<>();
stack.push("Primeiro"); // Adiciona elementos
stack.push("Segundo");
stack.push("Terceiro");
System.out.println("Topo da pilha: " + stack.peek()); // Ver o elemento superior
while (!stack.empty()) { // Enquanto a pilha não estiver vazia
System.out.println("Extraindo: " + stack.pop()); // Extrair elementos
}
}
}
Uma alternativa e abordagem mais recomendada nos desenvolvimentos Java modernos é usar ArrayDeque como pilha, pois oferece melhor desempenho.
// Exemplo de uso de ArrayDeque como pilha
import java.util.ArrayDeque;
import java.util.Deque;
public class ArrayDequeStackExample {
public static void main(String[] args) {
Deque<String> stack = new ArrayDeque<>(); // Usar Deque como pilha
stack.push("Primeiro"); // Adiciona elementos
stack.push("Segundo");
stack.push("Terceiro");
System.out.println("Topo da pilha: " + stack.peek()); // Ver o elemento superior
while (!stack.isEmpty()) { // Enquanto a pilha não estiver vazia
System.out.println("Extraindo: " + stack.pop()); // Extrair elementos
}
}
}
Aplicações de pilhas:
- Cálculo de expressões aritméticas (por exemplo, em notação polaca inversa).
- Desfazer/repetir operações em editores (Ctrl+Z/Ctrl+Y).
- Gestão de chamadas de funções no sistema operativo.
- Algoritmos recursivos.
- Percurso de grafos e árvores (busca em profundidade).