A seguir é apresentado o código da função "clonar(p)", capaz de criar e retornar uma nova pilha idêntica a uma pilha "p" já existente.
struct Pilha* clonar(struct Pilha* p) {
assert(p != NULL);
struct Pilha* clone = criar();
struct Pilha* aux = criar();
while(vazia(p) == false) {
empilhar(aux, desempilhar(p));
}
while(vazia(aux) == false) {
int elemento =____________;
____________;
empilhar(p, elemento);
}
____________
return clone;
}
Assinale a alternativa que preenche corretamente as lacuna do código da função "clonar":
Selecione uma alternativa:
a)
topo(aux) / empilhar(clone, elemento) / liberar(aux).
b)
desempilhar(aux) / empilhar(clone, elemento) / free(aux).
c)
desempilhar(aux) / empilhar(clone, elemento) / liberar(aux).
d)
desempilhar(aux) / empilhar(clone, desempilhar(aux)) / liberar(aux).
e)
topo(aux) / empilhar(clone, desempilhar(aux)) / free(aux).
A alternativa correta é a letra c) desempilhar(aux) / empilhar(clone, elemento) / liberar(aux). Explicação: O código da função "clonar(p)" cria uma nova pilha "clone" e uma pilha auxiliar "aux". Em seguida, ele desempilha todos os elementos da pilha "p" e empilha na pilha "aux". Depois, ele desempilha todos os elementos da pilha "aux" e empilha na pilha "p" novamente, enquanto empilha os mesmos elementos na pilha "clone". Por fim, ele libera a pilha "aux" e retorna a pilha "clone". Na linha "int elemento =____________;", o elemento desempilhado da pilha "aux" deve ser armazenado na variável "elemento". Na linha "empilhar(clone, elemento);", o elemento deve ser empilhado na pilha "clone". E na linha "liberar(aux);", a pilha "aux" deve ser liberada da memória.
Para escrever sua resposta aqui, entre ou crie uma conta
Compartilhar