Faça uma função que receba uma pilha como argumento e retorne o valor armazenado em seu topo. A função deve remover também esse elemento.

Passo 1

O enunciado pede para criarmos a operação de remoção de um elemento no topo de uma pilha (pop): isso envolve retornar o valor que está no topo e também removê-lo. O conteúdo é a estrutura de dados pilha e suas operações básicas.

Passo 2

Vamos modelar a pilha como uma estrutura que contém um vetor de elementos e um inteiro que indica a posição do topo (número de elementos). Sempre que empilhamos incrementamos esse índice; ao desempilhar, vamos decrementar.

Passo 3

Na função de desempilhar, o primeiro passo é verificar se a pilha está vazia, isto é, se o índice do topo é zero. Se estiver vazia, não há elemento para remover, então podemos sinalizar erro ou tratar adequadamente.
Se a pilha não estiver vazia, vamos decrementar o índice do topo em 1. Dessa forma, removemos logicamente o último elemento inserido.

Passo 4

Por fim, retornamos o valor que estava nessa posição (inicialmente em topo–1). Esse valor é a resposta da operação de pop.

Resposta

// Definição da pilha
#define MAX 100
typedef struct {
int elementos[MAX];
int topo; // número de elementos na pilha
} Pilha;
// Função que desempilha e retorna o valor do topo
int desempilhar(Pilha *p) {
if (p->topo == 0) {
// pilha vazia: tratar erro conforme necessidade
printf(“Erro: pilha vazia\n”);
exit(EXIT_FAILURE);
}
p->topo–; // decrementa o topo (remove elemento)
return p->elementos[p->topo]; // retorna o valor removido
}

Exercícios relacionados