Buscar

A pilha representa um conjunto dinâmico cujos elementos são inseridos e retirados de acordo com o seguinte protocolo: o último elemento que entra n...

A pilha representa um conjunto dinâmico cujos elementos são inseridos e retirados de acordo com o seguinte protocolo: o último elemento que entra no conjunto é o primeiro que sai. Dentre as principais operações que devem estar presentes em uma Estrutura de Dados do tipo pilha estão: empilhar, desempilhar e topo.

 

O código a seguir apresenta a implementação da função "empilhar". Contudo, um programador notou que a função não funciona como deveria.


01. void empilhar(struct Pilha* p, int item) {

02. assert(p != NULL);

03. struct No* novo_no = (struct No*) malloc(sizeof(struct No));

04. if (novo_no != NULL) {

05. novo_no->info = item;

06. novo_no->proximo = p->topo;

07. p->tamanho++;

08. }

09. }  

Assinale a alternativa que apresenta corretamente a instrução que falta para que a função seja corrigida, bem como a posição em que essa instrução deveria ser inserida no código.

💡 2 Respostas

User badge image

Ed Verified user icon

A instrução que falta para corrigir a função "empilhar" é a linha 07, que deve ser inserida após a linha 06. A instrução correta seria: 07. p->topo = novo_no; Essa instrução faz com que o ponteiro "topo" da pilha aponte para o novo nó inserido, garantindo que o último elemento inserido seja o primeiro a ser retirado, conforme o protocolo de uma pilha.

0
Dislike0
User badge image

Evandro Schuck

Resposta

Inserir a instrução "p->topo = novo_no" entre as linhas 6 e 7.

Comentário

Alternativa correta: Inserir a instrução "p->topo = novo_no" entre as linhas 6 e 7.  Inserir a instrução "p->topo = novo_no" entre as linhas 6 e 7. CORRETA, pois atualiza o valor do ponteiro "topo" da pilha, fazendo-o apontar para o novo nó a ser inserido. Além disso, coloca a instrução após a linha 6, na qual o ponteiro "proximo" do novo nó é apontado para o topo da pilha. Inserir a instrução "p->topo = novo_no" entre as linhas 5 e 6. INCORRETA, pois, apesar de a instrução estar correta, ela é adicionada no local incorreto. A instrução deveria estar após a linha 6, na qual o ponteiro "proximo" do novo nó é apontado para o topo da pilha. Inserir a instrução "p->topo = novo_no->proximo" entre as linhas 6 e 7. INCORRETA, pois a instrução está incorreta. O ponteiro "topo" deveria apontar para o novo nó e não para o próximo elemento do novo nó. Inserir a instrução "p->topo = novo_no->proximo" entre as linhas 5 e 6. INCORRETA, pois a instrução está incorreta. O ponteiro "topo" deveria apontar para o novo nó e não para o próximo elemento do novo nó. Inserir a instrução "p->topo = NULL" entre as linhas 6 e 7. INCORRETA, pois a instrução está incorreta. O ponteiro "topo" deveria apontar para o novo nó e não para o próximo elemento do novo nó.

0
Dislike0

✏️ Responder

SetasNegritoItálicoSublinhadoTachadoCitaçãoCódigoLista numeradaLista com marcadoresSubscritoSobrescritoDiminuir recuoAumentar recuoCor da fonteCor de fundoAlinhamentoLimparInserir linkImagemFórmula

Para escrever sua resposta aqui, entre ou crie uma conta

User badge image

Outros materiais