Sobre o conceito de Pilhas, responda:
3. Explique conceitualmente o que ocorre (em termos de apontadores e memória) quando executamos uma operação de push e uma de pop.
3. Explique conceitualmente o que ocorre (em termos de apontadores e memória) quando executamos uma operação de push e uma de pop.
Passo 1
O enunciado pede para explicar o que acontece, em termos de apontadores e memória, quando executamos as operações de push e pop em uma pilha (
). Vamos considerar a implementação clássica por vetor contínuo e um apontador
que indica a posição do elemento mais alto (se a pilha estiver vazia,
).
Passo 2
Ao executar uma operação de push, primeiro checamos se a pilha não está cheia (não ultrapassamos o tamanho máximo). Em seguida ajustamos o apontador
para apontar para a nova posição livre:
e então gravamos o novo valor em memória no índice
do vetor:
Esse incremento do
faz o apontador subir um nível na pilha, alocando efetivamente um novo slot de memória para o elemento inserido.
Passo 3
Na operação de pop, primeiro verificamos se a pilha não está vazia (
). Em seguida lemos o valor armazenado em
, que é o elemento a ser removido, e então decrementamos o apontador:
Esse decremento faz o
recuar um nível, “liberando” o slot de memória que antes referenciava o elemento removido (embora o dado permaneça fisicamente na memória até ser sobrescrito).
Resposta
Quando fazemos push, incrementamos o apontador
e escrevemos o valor no vetor na posição
. Quando fazemos pop, lemos o valor em
e então decrementamos
, removendo conceitualmente o elemento do topo da pilha.