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.

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 ( stack). Vamos considerar a implementação clássica por vetor contínuo e um apontador top que indica a posição do elemento mais alto (se a pilha estiver vazia, top=-1).

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 top para apontar para a nova posição livre:
top top + 1
e então gravamos o novo valor em memória no índice top do vetor:
ttstack[top] novo valor
Esse incremento do top 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 ( top >= 0). Em seguida lemos o valor armazenado em ttstack[top], que é o elemento a ser removido, e então decrementamos o apontador:
top top - 1
Esse decremento faz o top 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 top e escrevemos o valor no vetor na posição top. Quando fazemos pop, lemos o valor em ttstack[top] e então decrementamos top, removendo conceitualmente o elemento do topo da pilha.

Exercícios relacionados