Baixe o app para aproveitar ainda mais
Prévia do material em texto
Gabarito: A,E,A,C DISCIPLINA EID001 – Estruturas de Dados DATA 09 outubro 2019 CÓDIGO DA PROVA P001 INSTRUÇÕES AO ALUNO 1. É obrigatória a devolução deste caderno de questões ao término da prova. 2. Está autorizada a entrada de alunos até 1 hora depois do início marcado da prova (início da prova: 18h). 3. Você só poderá sair depois de transcorridas 1 hora e 15 minutos do início marcado da prova. 4. As respostas às questões dissertativas devem demonstrar a linha de raciocínio ou o processo de resolução, e não apenas o resultado final. QUESTÕES OBJETIVAS Questão 1 (1,5 pontos) Assinale a alternativa FALSA em relação à linguagem de programação C: a) A linguagem C não permite o acesso direto a uma posição de memória, sendo esta encapsulada pela linguagem de programação. b) Para alocar memória na linguagem C, podemos usar a função malloc, que recebe como parâmetro o número de bytes que se deseja alocar e retorna o endereço inicial do bloco de bytes que foi alocado. c) A linguagem C faz uma distinção entre um tipo e um ponteiro para um tipo. d) Na declaração de uma variável, do tipo ponteiro, usamos um * (asterisco) após o identificador do tipo para indicar que estamos nos referindo a um endereço para aquele tipo. Questão 2 (1,5 pontos) Na implementação de um deque com alocação dinâmica em uma lista ligada e com um nó cabeça, foram utilizadas as seguintes estruturas: typedef int TIPOCHAVE; typedef struct { TIPOCHAVE chave; } REGISTRO; typedef struct auxElem { REGISTRO reg; struct auxElem* ant; struct auxElem* prox; } ELEMENTO; typedef ELEMENTO* PONT; 1 de 6 CADERNO DE PERGUNTAS Avaliação Regular Gabarito: A,E,A,C DISCIPLINA EID001 – Estruturas de Dados DATA 09 outubro 2019 CÓDIGO DA PROVA P001 INSTRUÇÕES AO ALUNO 1. É obrigatória a devolução deste caderno de questões ao término da prova. 2. Está autorizada a entrada de alunos até 1 hora depois do início marcado da prova (início da prova: 18h). 3. Você só poderá sair depois de transcorridas 1 hora e 15 minutos do início marcado da prova. 4. As respostas às questões dissertativas devem demonstrar a linha de raciocínio ou o processo de resolução, e não apenas o resultado final. QUESTÕES OBJETIVAS typedef struct { PONT cabeca; } DEQUE; 2 de 6 CADERNO DE PERGUNTAS Avaliação Regular Gabarito: A,E,A,C DISCIPLINA EID001 – Estruturas de Dados DATA 09 outubro 2019 CÓDIGO DA PROVA P001 As funções para excluir os elementos, tanto do início quanto do fim, foram implementadas conforme a seguir. Entretanto, algumas partes do código estão faltando. Preencha esses pedaços para que o código funcione corretamente. bool excluirElemDequeInicio(DEQUE* d, REGISTRO* reg){ if (d->cabeca->prox == d->cabeca) return false; // deque vazio PONT apagar = d->cabeca->prox; *reg = apagar->reg; d->cabeca->prox = __________; __________ = d->cabeca; free(apagar); return true; } bool excluirElemDequeFim(DEQUE* d, REGISTRO* reg){ if (d->cabeca->prox == d->cabeca) return false; // deque vazio PONT apagar = d->cabeca->ant; *reg = apagar->reg; d->cabeca->ant = __________; __________ = d->cabeca; free(apagar); return true; } A alternativa que preenche corretamente as lacunas é: a) apagar->prox, apagar->prox->ant, apagar->ant, apagar->prox->ant b) apagar->prox, apagar->ant->prox, apagar->ant, apagar->prox->ant c) apagar->ant, apagar->prox->ant, apagar->prox, apagar->prox->ant d) apagar->ant, apagar->ant->prox, apagar->prox, apagar->ant->prox e) apagar->prox, apagar->prox->ant, apagar->ant, apagar->ant->prox Questão 3 (1,5 pontos) A árvore AVL mostrada a seguir foi criada após uma sequência de inserções. 3 de 6 Gabarito: A,E,A,C DISCIPLINA EID001 – Estruturas de Dados DATA 09 outubro 2019 CÓDIGO DA PROVA P001 Qual das alternativas mostra uma sequência capaz de gerar a árvore? a) 0, 9, 1, 15, 12, 8, 7, 6, 3, 57, 35 b) 35, 57, 3, 6, 7, 8, 12, 15, 1, 9, 0 c) 8, 7, 6, 3, 57, 35, 1, 15, 12, 9, 0 d) 57, 3, 6, 7, 8, 12, 15, 1, 9, 0, 35 e) 57, 35, 1, 15, 12, 9, 0, 8, 7, 6, 3 Questão 4 (1,5 pontos) Um grafo não direcionado possui 10 vértices rotulados com os seguintes números: {18, 20, 26, 30, 33, 36, 37, 89, 92, 93}. Note que todos os rótulos possuem dois dígitos. Uma aresta liga dois vértices se, e somente se, eles possuem dígitos em comum em qualquer posição. Por exemplo, uma aresta liga 18 e 89, uma aresta liga 20 e 26, e assim por diante. Assinale a alternativa que indica uma possível ordem de visita aos vértices quando executamos uma busca em largura começando no vértice 18: a) 18, 89, 92, 20, 26, 93, 30, 33, 36, 37 b) 18, 89, 92, 93, 30, 33, 36, 37, 20, 26 c) 18, 89, 92, 93, 20, 26, 30, 33, 36, 37 d) 18, 89, 93, 92, 20, 33, 36, 37, 30, 26 e) 18, 89, 93, 92, 20, 26, 30, 33, 36, 37 QUESTÕES DISSERTATIVAS Questão 5 (2,0 pontos) Assumindo que temos uma estrutura de dados do tipo pilha implementada com a seguinte estrutura: typedef struct { int chave; } REGISTRO; typedef struct { int topo; // Índice do elemento no topo da pilha. int A[MAX]; } PILHA; 4 de 6 Gabarito: A,E,A,C DISCIPLINA EID001 – Estruturas de Dados DATA 09 outubro 2019 CÓDIGO DA PROVA P001 Crie uma função que recebe uma referência/ponteiro para uma variável do tipo PILHA e reverte os valores que estão nessa pilha. Nesse caso, o que estava no final da pilha deverá ir para o topo e vice-versa. Questão 6 (2,0 pontos) Considere o grafo a seguir: Descreva a ordem de visita dos nós, iniciando no nó “a”, os seguintes percursos: A) Em largura. B) Em profundidade. 5 de 6 Gabarito: A,E,A,C DISCIPLINA EID001 – Estruturas de Dados DATA 09 outubro 2019 CÓDIGO DA PROVA P001 QUESTÕES OBJETIVAS Questão 1 A resposta correta é: A linguagem C não permite o acesso direto a uma posição de memória, sendo esta encapsulada pela linguagem de programação. Justificativa A linguagem C permite acesso a uma posição de memória, fazendo distinção entre o que é uma posição de memória e o que é um ponteiro para essa região de memória, que seria um ponteiro para um determinado tipo. Usamos o * para identificar qual o tipo a que estamos nos referenciando. A alocação de memória é feita pelo malloc, que recebe como parâmetro o número de bytes que se deseja alocar e retorna o endereço inicial do bloco alocado. Questão 2 A resposta correta é: apagar->prox, apagar->prox->ant, apagar->ant, apagar->ant->prox Justificativa Este é o único preenchimento que fará o código funcionar. Questão 3 A resposta correta é: 0, 9, 1, 15, 12, 8, 7, 6, 3, 57, 35 Justificativa Existem várias maneiras de se gerar a configuração pedida, mas dentre as alternativas, apenas a que foi indicada como resposta correta é capaz de fazer isso. Questão 4 A resposta correta é: 18, 89, 92, 93, 20, 26, 30, 33, 36, 37 Justificativa Existem várias maneiras de se percorrer os nós em uma busca em largura. Entretanto, dentre as alternativas, apenas aquela indicada como resposta correta é possível em um algoritmo de busca em largura. QUESTÕES DISSERTATIVAS Questão 5 O aluno deverá substituir as posições A[0] com A[max-1], A[1] com A[max-2], e assim por diante. Rubricas | critérios de correção 1 – Pontuar metade da questão para o aluno que entendeu a lógica pedida. 2 – Pontuar mais 25% para o aluno que estruturou o laço de repetição e as atribuições de maneira correta. 3 – Pontuar mais 25% para o aluno que não cometeu nenhum erro de sintaxe. Questão 6 Várias respostas são possíveis, desde que satisfaçam os percursos pedidos. Um exemplo seria: Largura: a, c, b, f, i, d, g, h, e, j Profundidade: a, c, i, j, f, e, d, h, b, g Rubricas | critérios de correção Pontuar igualmente para os percursos largura e profundidade. Apenas dar nota para os alunos que acertaram integralmente um percurso possível. 6 de 6 GABARITO
Compartilhar