Baixe o app para aproveitar ainda mais
Prévia do material em texto
Aluno: Matr.: Disc.: ESTRUTURA DE DADOS 2020.1 (G) / EX Prezado (a) Aluno(a), Você fará agora seu TESTE DE CONHECIMENTO! Lembre-se que este exercício é opcional, mas não valerá ponto para sua avaliação. O mesmo será composto de questões de múltipla escolha. Após responde cada questão, você terá acesso ao gabarito comentado e/ou à explicação da mesma. Aproveite para se familiarizar com este modelo de questões que será usado na sua AV e AVS. 1. Para converter de decimal para binário usamos a estrutura de dados pilha. Assinale a opção que, corretamente, indica as ações corretas para empilhar o resto da divisão gerado no processo de conversão, considerando uma lista simplesmente encadeada. Considere o tipo definido abaixo : struct no { int dado; struct no *link; }; É preciso armazenar o resto da divisão do número por 2 no campo dado do primeiro nó da lista e retornar o ponteiro para este nó. É preciso alocar memória com new, armazenar o resto da divisão do número por 2 no campo dado do novo nó, apontar o link do novo nó para o início da lista e enfim, retornar o ponteiro para o novo nó. Não é necessário alocar memória com new. Basta criar uma struct do tipo no, armazenar o resto da divisão número por 2 no campo dado e aterrar o campo link. Basta alocar memória com new e armazenar o resto da divisão do número por 2 no campo dado do novo nó . Basta alocar memória com new, armazenar o resto da divisão do número por 2 no campo dado do novo nó e aterrar o link do novo nó. Gabarito Coment. 2. Seja o seguinte exemplo de nodo de uma lista de encadeada: struct nodo{ float valor; string produto; nodo * proximo; }; Sabendo-se que nesta lista o último nó ou nodo possui o campo próximo nulo (null), marque a alternativa que representa corretamente a operação de busca do último nodo, a partir de um ponteiro pt apontado para o primeiro nodo da lista. while(pt->próximo)pt=pt->próximo; while(próximo)pt=próximo; while(pt->próximo != null)pt=pt->próximo->proximo; while(pt != null)pt=pt->próximo; while(pt->próximo->proximo)pt=pt->próximo; Explicação: O código será: while(pt->próximo)pt=pt->próximo; 3. Assinale a opção correta. Sobre pilha dinâmica podemos afirmar que : insere-se em qualquer posição, antes ou após qualquer nó, visto que é dinâmica. usa o critério FIFO, visto que é dinâmica. é recomendada para qualquer tipo de aplicação em que insere-se no final e retira-se do início. só pode ter seus dados impressos no sentido do último nó para o primeiro nó. usa o critério LIFO e é implementada usando-se listas encadeadas. Gabarito Coment. 4. Sobre uma estrutura de dados do tipo LIFO, observe as seguintes afirmações: (1) É uma pilha. (2) Pode ser uma fila com prioridades (3) É uma estrutura onde o primeiro elemento a entrar é o último a sair. Sobre estas afirmações marque a opção correta: Todas as afirmações são falsas Todas as afirmações são verdadeiras Apenas a afirmação (1) é verdadeira Apenas as afirmações (1) e (3) são verdadeiras Apenas a afirmação (3) é verdadeira 5. Em termos da estrutura de dados do tipo FILA (fila encadeada com alocação dinâmica), a sequência de ações insere(10), insere(3), insere(5), insere(8), remove(), remove(), insere(20), promoveria a configuração da estrutura: 5 8 20 10 3 20 20 5 8 10 3 5 8 20 5 8 Explicação: insere(10), insere(3), insere(5), insere(8), remove(), remove(), insere(20), 10-> 3 -> 5 -> 8 após inserir 10,3,5 e 8. Inserção no fim Depois do 1o. remove, temos 3->5->8 Depois do 2o. remove temos 5 -> 8 Ao ocorrer o último insere temos : 5 -> 8 - > 20, sendo que 5 esta no início e 20 no fim 6. Tínhamos declarado um ponteiro de nome ptr e precisávamos construir uma estrutura de repetição que pudesse repetir enquanto o ponteiro não fosse nulo. Observe os trechos abaixo e assinale qual a afirmativa correta. I if (ptr !=NULL) II if( !ptr ) III if(ptr) IV while (ptr !=NULL) V while (ptr) I e II estão corretas. III está correta III e V estão corretas I e IV estão corretas IV e V estão corretas. Gabarito Coment. 7. Assinale a característica que NÃO está relacionada às estruturas de dados encadeadas: A memória para armazenar seus elementos é, em geral, alocada com o uso de new. A memória ocupada por seus elementos é, em geral, liberada com o uso de delete. Consomem memória de maneira permanente, só sendo liberadas ao fim do programa. Cada elemento guarda pelo menos um ponteiro para outro elemento da estrutura. Em geral, marca-se o último elemento com um ponteiro de valor NULL. 8. Estava um aluno estudando Lista Simplesmente Encadeada quando encontrou em um site a definição da struct nodo e de uma função cujo nome você deverá escolher para substituir XXX nas opções abaixo depois que analisar a função, assumindo que teste foi realizado, permitindo que a operação fosse realizada. struct nodo { int info; struct nodo *prox; }; nodo* XXX(nodo *ptr, int valor) { nodo *temp = new nodo; ... temp->info = valor; temp->prox = ptr; return temp; } RemoveNo InsereNoFrente ListaNo InsereNoFim BuscaNaLista
Compartilhar