Buscar

ESTRUTURA DE DADOS prova A3

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Local: Sa la 1 - Sa la de Aula / Anda r / Polo Ma r icá / PO LO MARICÁ - RJ
Acadêmi co: EAD-IL10301-20214A
Aluno: PAB LO HENRIQ UE ENEDINO DO S ANJO S
Avali ação: A3
Matrí cula: 20204300475 
Data: 11 de Dez embr o de 2021 - 08:00 Fi na l i z a do
Correto Incorreto Anulada  Discursiva  Objetiva Total: 8,50/10,00
1  Código: 35702 - Enunciado: O conceito de grafo, definido por Simões-Pereira (2014), apresenta o grafo G = (V, E) como um sistema formado por
um conjunto V de elementos chamados vértices, pontos ou nodos e por um conjunto E de pares não ordenados de vértices denominados
arestas ou linhas. As estruturas de dados árvores são advindas dos grafos. Neste viés, analise a figura a seguir.
Indique o que representa essa figura.
 a) Dígrafo.
 b) Árvore binária balanceada.
 c) Árvore AVL.
 d) Grafo não direcionado.
 e) Árvore binária não balanceada.
Alternativa marcada:
a) Dígrafo.
Justificativa: Resposta correta: Dígrafo.A figura refere-se à representação de um dígrafo, também conhecido como grafo direcionado, por
apresentar setas para ligar os vértices desse grafo.
Distratores:Árvore AVL. Errada, pois reportam aos tipos de estruturas de dados árvores cuja representação gráfica apresenta um nó-pai ligado,
no máximo, a dois nós-filhos.Árvore binária balanceada. Errada, pois reportam aos tipos de estruturas de dados árvores cuja representação
gráfica apresenta um nó-pai ligado, no máximo, a dois nós-filhos. Árvore binária não balanceada. Errada, pois reportam aos tipos de estruturas
de dados árvores cuja representação gráfica apresenta um nó-pai ligado, no máximo, a dois nós-filhos.Grafo não direcionado. Errada, pois se
refere a um grafo que não apresenta seta na ligação de seus vértices. 
1,00/ 1,00
2  Código: 35713 - Enunciado: Veja a seguinte descrição de estrutura de dados: "Suas operações de inserção e remoção são realizadas pelo topo,
com os respectivos nomes técnicos de push e pop."Indique a qual tipo de estrutura de dados o trecho se refere.
 a) Grafo.
 b) Árvore.
 c) Pilha.
1,00/ 1,00
 d) Lista.
 e) Fila.
Alternativa marcada:
c) Pilha.
Justificativa: Resposta correta: Pilha.A estrutura de dados pilha é responsável pelos processos de empilhamento (push) e desempilhamento
(pop).
Distratores:Árvore. Errada, pois não é uma estrutura de dados que realiza os processos de push e pop. Seu processo é aleatório e balanceado,
assim como os grafos.Lista. Errada, pois não é uma estrutura de dados que realiza os processos de push e pop. Seu processo é input
sequencial.Fila. Errada, pois não é uma estrutura de dados que realiza os processos de push e pop. Seu processo é FIFO.Grafo. Errada, pois não é
uma estrutura de dados que realiza os processos de push e pop. Seu processo é aleatório e balanceado, assim como as árvores.
3  Código: 35698 - Enunciado: As árvores são estruturas de dados que apresentam nós, tecnicamente denominados vértices, que podem estar
ligados a outros nós por meio de uma linha de ligação, tecnicamente denominada aresta. Existem diversas formas de representar graficamente a
estrutura de dados árvore. Nesse contexto, analise a figura a seguir e identifique o tipo de representação.
 a) Representação por inclusão.
 b) Representação hierárquica.
 c) Representação por parênteses aninhados.
 d) Representação por indentação.
 e) Representação por vetor de dados.
Alternativa marcada:
e) Representação por vetor de dados.
Justificativa: Resposta correta: Representação por vetor de dados.
Distratores: Representação por indentação. Errada, pois não apresenta a estrutura na forma indentada.Representação hierárquica. Errada, pois
não apresenta a estrutura em forma de árvore.Representação por parênteses aninhados. Errada, pois não apresenta a estrutura na forma de
pareamento.Representação por inclusão. Errada, pois a estrutura não está na forma de diagrama de Venn.
1,00/ 1,00
4  Código: 41092 - Enunciado: De acordo com Forbellone e Eberspacher (2005), denominamos lista "um conjunto de elementos individualizados
em que cada um referencia outro elemento distinto como sucessor". (Fonte: FORBELLONE, A. L. V.; EBERSPACHER, H. F. Lógica de programação: a
construção de algoritmos e estruturas de dados. 3. ed. São Paulo: Prentice Hall, 2005.)
Neste contexto, leia as assertivas a seguir e marque a alternativa correta.I. A lista simplesmente encadeada apresenta uma posição de início e
1,00/ 1,00
término (NULL) dessa lista, em que cada elemento é armazenado em uma posição de memória que vem acompanhada da informação do
próximo endereço de memória onde se encontra o próximo elemento dessa lista.II. A lista duplamente encadeada apresenta duas posições de
início e término (NULL) dessa lista, pois a realização da leitura do elemento da lista pode decorrer tanto no sentido horário como no sentido anti-
horário, dada a existência da referência de dois ponteiros, anterior e próximo, que indicam a posição anterior e posterior da lista,
respectivamente.III. A lista circular simplesmente encadeada apresenta uma posição de início e término dessa lista, que aponta sempre para o
primeiro elemento, caracterizando, portanto, uma estrutura circular.
 a) II e III, apenas.
 b) I e II, apenas.
 c) I, II e III.
 d) I e III, apenas.
 e) Somente a II.
Alternativa marcada:
c) I, II e III.
Justificativa: Resposta correta: I, II e III.A afirmativa I está correta, pois a lista simplesmente encadeada apresenta uma posição de início, em que
os elementos dessa lista são inseridos, e término, indicando vazio ou NULL, pois ela é unidirecional.A afirmativa II está correta, pois a lista
duplamente encadeada apresenta duas posições de início, em que os elementos dessa lista são inseridos, e término, indicando vazio ou NULL,
pois ela é bidirecional.A afirmativa III está correta, pois a lista circular simplesmente encadeada apresenta uma posição de início, em que os
elementos são inseridos, e término, indicando vazio ou NULL, podendo ser caracterizada como unidirecional ou bidirecional.
5  Código: 35784 - Enunciado: Tomando como base a tabela a seguir, analise os elementos de sua composição, de forma a interpretá-los, buscando
identificar, por meio do percurso de pós-ordem, referente ao método de busca em profundidade, a ordem de visita de cada elemento, e marque,
em seguida, a alternativa correta em relação à leitura realizada.
 a) 18, 22, 36, 23, 52, 58, 76, 88, 99, 97, 69, 45.
 b) 18, 22, 23, 36, 45, 52, 58, 69, 76, 88, 97, 99.
 c) 45, 23, 22, 18, 36, 69, 58, 52, 97, 88, 76, 99.
 d) 45, 23, 69, 22, 36, 58, 97, 18, 52, 88, 99, 76.
 e) 23, 22, 36, 18, 69, 58, 52, 97, 88, 99, 76, 45.
Alternativa marcada:
a) 18, 22, 36, 23, 52, 58, 76, 88, 99, 97, 69, 45.
1,50/ 1,50
Justificativa: Resposta correta: 18, 22, 36, 23, 52, 58, 76, 88, 99, 97, 69, 45. Indica saída do percurso pós-ordem (EDR)
// Algoritmo Pós-Ordemvoid PosOrdem(Arvbin p) { if (p) { PosOrdem(p->esq); PosOrdem(p->dir); Visite(p); } }
Distratores:
45, 23, 22, 18, 36, 69, 58, 52, 97, 88, 76, 99. Errada, pois indica saída do percurso pré-ordem (RED).
// Algoritmo Pré-Ordemvoid PreOrdem(Arvbin p) { if (p) { Visite(p); PreOrdem(p->esq); PreOrdem(p->dir); } } 
45, 23, 69, 22, 36, 58, 97, 18, 52, 88, 99, 76. Errada, pois indica saída do percurso para busca em largura (DFS).
// Algoritmo Busca em Larguravoid Largura(Arvbin p) { inicializa_fila(); ins_fila(p); while (!fila_vazia()) { p = rem_fila(); if (p) { Visite(p); 
 ins_fila(p->esq); ins_fila(p->dir); } } finaliza_fila(); }
18, 22, 23, 36, 45, 52, 58, 69, 76, 88, 97, 99. Errada, pois indica saída do percurso em ordem (ERD)..// Algoritmo Em Ordemvoid EmOrdem(Arvbin p) {
if (p) { EmOrdem(p->esq); Visite(p); EmOrdem(p->dir); } }
23, 22, 36, 18, 69, 58, 52, 97, 88, 99, 76, 45. Errada, pois representa erro no processamento de saída, pois não referencia nenhum dos métodos
válidos (o aluno confundiu o primeiro valor da esquerdacomo 23)
6  Código: 35792 - Enunciado: Faça a análise do programa a seguir, cujo código está escrito em linguagem C, e marque a alternativa que
corresponda à implementação da rotina de remoção de dados em uma lista simplesmente encadeada.
void main( ) { setlocale(LC_ALL, "portuguese");
 ListaSimplesEnc minhaLista; int valor, op, valorAlt;
 criarLista(&minhaLista);
 printf("Escolha uma opção:\n");
 while (1) { printf("\n(1) Inserir elemento no início da Lista\n"); printf("(2) Inserir elemento em ordem (verifique se a lista
está ordenada)\n"); printf("(3) Remover elemento no início da Lista\n"); printf("(4) Remover elemento específico da Lista\n"); 
 printf("(5) Mostrar Lista\n"); printf("(6) Apagar todos os elementos da Lista\n"); printf("(7) Alterar elemento da
Lista\n"); printf("(0) Sair\n"); printf(" ? "); scanf("%d", &op);
 system("cls"); switch (op) { case 1: // inserir elemento no início printf("Valor? "); 
 scanf("%d", &valor); inserirIni(&minhaLista, valor); break; case 2: // inserir elemento ordenado 
 printf("Valor? "); scanf("%d", &valor); inserirOrd(&minhaLista, valor); break; 
case 3: // remover o primeiro removerIni(&minhaLista); break; case 4: // remover determinado
elemento printf("Valor? "); scanf("%d", &valor); removerEle(&minhaLista, valor); 
 break; case 5: // mostrar lista if (estaVazia(&minhaLista)) { printf("Lista vazia\n"); 
 } else { mostrarLista(&minhaLista); } break; case 6: //
apagar todos os elementos da Lista removerTudo(&minhaLista); break; case 7: // alterar um elemento 
 printf("Valor a ser alterado? "); scanf("%d", &valor); printf("Novo valor? "); 
 scanf("%d", &valorAlt); alterarEle(&minhaLista, valor, valorAlt); break; case 0: // abandonar o
programa removerTudo(&minhaLista); exit(0); default: printf("Opção
inexistente!\n"); } }}
1,50/ 1,50
 a) void atento(ListaSimplesEnc *pList) { Nodo *pAux = pList->prim;
 if (pAux != NULL) { pList->prim = pList->prim->prox; free(pAux); } else { printf("Lista
Vazia\n"); }}
 b) void atento(ListaSimplesEnc *pList, int v1, int v2) { Nodo *pAtu, *pAnt;
 pAnt = NULL; pAtu = pList->prim;
 while (pAtu != NULL && pAtu->info != v1) { pAnt = pAtu; pAtu = pAtu->prox; }
 if (pAnt != NULL) { if (pAtu != NULL) { pAtu->info = v2; } else { 
 printf("Valor não encontrado\n"); } } else { printf("Lista Vazia\n"); }}
 c) int atento(ListaSimplesEnc *pList) {// Atento aos comentários: elemento removido com sucesso return(pList->prim == NULL);}
 d) void atento(ListaSimplesEnc *pList, int v) { Nodo *novo; novo = (Nodo*)malloc(sizeof(Nodo));
 if (novo != NULL) { novo->info = v; novo->prox = pList->prim; pList->prim = novo; } else 
{ printf("Memória Insuficiente\n"); }}
 e) void atento(ListaSimplesEnc *pList) { Nodo *p; printf("Lista: "); for (p = pList->prim; p != NULL; p = p->prox) { 
 printf("%d -> ", p->info); } printf("NULL\n");}
Alternativa marcada:
a) void atento(ListaSimplesEnc *pList) { Nodo *pAux = pList->prim;
 if (pAux != NULL) { pList->prim = pList->prim->prox; free(pAux); } else { printf("Lista
Vazia\n"); }}
Justificativa: Resposta correta: Representa uma rotina de remoção de elementos de uma lista simplesmente encadeada.void
atento(ListaSimplesEnc *pList) { Nodo *pAux = pList->prim;
 if (pAux != NULL) { pList->prim = pList->prim->prox; free(pAux); } else { printf("Lista
Vazia\n"); }}
Distratores:void atento(ListaSimplesEnc *pList, int v) { Nodo *novo; novo = (Nodo*)malloc(sizeof(Nodo));
 if (novo != NULL) { novo->info = v; novo->prox = pList->prim; pList->prim = novo; } else 
 { printf("Memória Insuficiente\n"); }}Errada, pois se refere à operação de inclusão de elementos em uma lista simplesmente
encadeada.
void atento(ListaSimplesEnc *pList) { Nodo *p; printf("Lista: "); for (p = pList->prim; p != NULL; p = p->prox) { 
 printf("%d -> ", p->info); } printf("NULL\n");}Errada, pois se refere à rotina de consulta de elementos de uma lista simplesmente
encadeada.
void atento(ListaSimplesEnc *pList, int v1, int v2) { Nodo *pAtu, *pAnt;
 pAnt = NULL; pAtu = pList->prim;
 while (pAtu != NULL && pAtu->info != v1) { pAnt = pAtu; pAtu = pAtu->prox; }
 if (pAnt != NULL) { if (pAtu != NULL) { pAtu->info = v2; } else 
 { printf("Valor não encontrado\n"); } } else { printf("Lista Vazia\n"); }}Errada, pois
se refere à rotina de alteração de elementos de uma lista simplesmente encadeada.
int atento(ListaSimplesEnc *pList) {// Atento aos comentários: elemento removido com sucesso return(pList->prim == NULL);}Errada, pois
se refere à rotina de teste paralista vazia.
7  Código: 35796 - Enunciado: "As árvores, independentemente de sua variação — árvores binárias, árvores AVL, árvores rubro-negras, árvore B, por
exemplo — permitem que sejam realizadas as operações de busca em árvore. Quanto aos métodos de busca em árvores, são apresentadas a
busca em profundidade, que permite a aplicação das técnicas de percurso de pré-ordem, em ordem e pós-ordem, e busca em largura." (Fonte:
BOENTE, A. N. P. Aprendendo a programar em linguagem C: do básico ao avançado. Rio de Janeiro: Brasport, 2003.) 
Neste contexto, analise a árvore a seguir e marque a alternativa que corresponda ao método de busca em profundidade sob a técnica de
percurso de pós-ordem.
 a) 1, 2, 4, 5, 3, 6, 7.
 b) 4, 2, 4, 1, 6, 3, 7.
 c) 4, 5, 2, 6, 7, 3, 1.
 d) 1, 2, 3, 4, 5, 6, 7.
 e) 1, 2, 3, 6, 7, 4, 5.
Alternativa marcada:
c) 4, 5, 2, 6, 7, 3, 1.
Justificativa: Resposta correta: 4, 5, 2, 6, 7, 3, 1. Representa o percurso pós-ordem (EDR).
Distratores:1, 2, 3, 4, 5, 6, 7. Errada, pois apresenta busca em largura (BFS).1, 2, 3, 6, 7, 4, 5. Apresenta erro na tentativa da composição do percurso
pré-ordem.1, 2, 4, 5, 3, 6, 7. Errada, pois apresenta percurso pré-ordem (RED).4, 2, 4, 1, 6, 3, 7. Errada, pois apresenta percurso em ordem (ERD).
1,50/ 1,50
8  Código: 37888 - Enunciado: De acordo com Boente (2003), "a alocação dinâmica de memória em tempo de execução é realizada na linguagem C,
por meio de ponteiros ou apontadores, utilizando, para isso, a função malloc( )". (Fonte: BOENTE, A. N. P. Aprendendo a programar em linguagem
C: do básico ao avançado. Rio de Janeiro: Brasport, 2003.)
Neste contexto, analise o código-fonte a seguir, escrito em linguagem C, e marque a alternativa correta.#include <stdio.h>#include
<malloc.h>#include <dos.h>void main ( ){ int *ptr;
ptr = ( int * ) malloc( sizeof( int ));*ptr = 3;
 system(“CLS”); printf (“Conteudo do ponteiro: %d\n\n”, *ptr); system(“PAUSE”);}
 a) Permite que o apontador *ptr aponte para a próxima informação que está contida na posição 3 de memória.
 b) Não executa função alguma, pois existe um erro na linha de código ptr = ( int * ) malloc( sizeof( int ));.
 c) Permite que o apontador *ptr aponte para o próximo endereço de memória que está contido na posição 3.
 d) Imprime o conteúdo de dado 3, armazenado no apontador ptr.
 e) Imprime o valor do próximo endereço dinâmico de memória em que *ptr é igual a 3.
0,00/ 1,50
Alternativa marcada:
e) Imprime o valor do próximo endereço dinâmico de memória em que *ptr é igual a 3.
Justificativa: Resposta correta: Imprime o conteúdo de dado 3, armazenado no apontador ptr.Trata-se de uma função de exibição.
Distratores:Permite que o apontador *ptr aponte para a próxima informação que está contida na posição 3 de memória. Errada, pois &ptr; é a
instrução endereço de memória, e não *ptr, que é utilizada para conteúdo de dado, como afirma a questão.Permite que o apontador *ptr aponte
para o próximo endereço de memória que está contido na posição 3. Errada, pois &ptr; é a instrução endereço de memória, e não *ptr, que é
utilizada para conteúdo de dado, como afirma a questão.Imprime o valor do próximo endereço dinâmico de memória em que *ptr é igual a 3.
Errada pois &ptr; é a instrução endereço de memória, e não *ptr, que é utilizada para conteúdo de dado, como afirma a questão.Não executa
função alguma, pois existe um erro na linha de código ptr = ( int * ) malloc( sizeof( int ));. Errada, pois não existe erro na linha de código ptr = ( int *
) malloc( sizeof( int ));.

Continue navegando

Outros materiais