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 …
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:
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.