A Pilha é uma das estruturas mais simples e mais versáteis dentre as utilizadas na computação. Pode-se imaginar uma pilha de tijolos, uma pilha de roupas, de pratos. Todavia, suas aplicações computacionais variam desde as chamadas recursivas até a manipulação de dados em memória principal.
Considere o código a seguir, cujo propósito seria o de remover um elemento na posição que demarca o topo da pilha:

01 - void pilha_remover(struct str_no pilha){
02 - struct str_no atual;
03 - atual = (struct str_no*) malloc(sizeof(struct str_no));
04 - while(pilha->proximo != NULL){
05 - atual = pilha;
06 - pilha = pilha->proximo;
07 - }
08 - atual->proximo = NULL;
09 - }Com base no código-fonte apresentado, analise as afirmativas a seguir:I. Os comandos compreendidos entre as linhas 4, 5, 6 e 7 são para percorrer a lista do início ao fim.
II. A função tenta realizar a remoção de um elemento sem a preocupação de liberar memória.
III. O funcionamento desse algoritmo permaneceria inalterado caso o comando da linha 3 fosse removido.É correto o que se afirma em:
A) II e III, apenas.
B) I, II e III.
C) I e III, apenas.
D) III, apenas.
E) II, apenas.

Resposta :

Resposta:

A resposta correta é a opção A) II e III, apenas.

Explicação:

I. Os comandos compreendidos entre as linhas 4, 5, 6 e 7 não são para percorrer a lista do início ao fim, mas sim para encontrar o último elemento da pilha, pois a remoção deve ser feita no topo da pilha. Portanto, é falsa.

II. A função tenta realizar a remoção de um elemento sem a preocupação de liberar a memória alocada dinamicamente para o elemento removido. Isso é um problema, pois pode levar a vazamentos de memória. Portato, é verdadeira.

III. O funcionamento desse algoritmo permaneceria inalterado caso o comando da linha 3 fosse removido, pois essa linha aloca memória dinamicamente para uma variável auxiliar, mas essa variável não é utilizada posteriormente no código. Portanto, é verdadeira.

Outras perguntas