Júlio está desenvolvendo uma aplicação e precisa implementar um mecanismo de desfazer/refazer de um editor de texto utilizando o algoritmo LIFO (Last In, First Out). Para implementar o algoritmo LIFO, Júlio deve usar a estrutura de dados:
- A)fila;
Errada, porque fila funciona em FIFO, ou seja, o primeiro que entra é o primeiro a sair, e não LIFO.
- B)pilha;
Certa, porque pilha segue exatamente a lógica LIFO: o último elemento inserido é o primeiro a ser removido.
- C)árvore;
Errada, porque árvore é uma estrutura hierárquica e não representa, por si só, o comportamento LIFO.
- D)nó folha;
Errada, porque nó folha é apenas um tipo de nó em árvore, não uma estrutura para controle de acesso LIFO.
- E)tabela hash.
Errada, porque tabela hash é usada para busca e armazenamento eficiente por chave, não para ordem LIFO.
Gabarito: B
Quando a questão fala em desfazer/refazer e cita LIFO, ela está falando da lógica de acesso ao último elemento inserido primeiro. Imagine uma pilha de pratos: você coloca por cima e tira de cima. É exatamente esse comportamento que um editor usa para registrar ações recentes e permitir desfazer na ordem inversa em que foram feitas. A estrutura de dados clássica para implementar LIFO é a pilha. Nela, as operações principais são push (inserir) e pop (remover), sempre no topo. Isso combina perfeitamente com o mecanismo de undo/redo, porque a última ação do usuário é a primeira a ser desfeita. Em prova, sempre que aparecer LIFO, pense em pilha antes de qualquer outra coisa. A fila segue a lógica FIFO, isto é, primeiro a entrar, primeiro a sair, então ela tem um comportamento diferente e não serve para esse caso. Árvores, nós folha e tabelas hash resolvem outros problemas, mas não representam a ideia de acesso pelo último elemento inserido. Em resumo: para LIFO, a estrutura adequada é a pilha, e por isso o gabarito é a letra B.