Buscar

Apols estutura de dados

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 49 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 49 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 9, do total de 49 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

Apols estutura de dados
Questão 1/5 - Estrutura de Dados
Na AULA 4 estudamos árvores binárias.
Acerca de árvore binárias e a inserção dos dados em uma árvore construída para funcionar como uma Binary Search Tree, assinale a alternativa CORRETA.
Nota: 20.0
A
Em uma BST trabalhando com dados numéricos inteiros, cada elemento de valor maior que seu nó
pai é inserido no ramo esquerdo. Valores menores ficam no ramo esquerdo;
B Em uma BST, podemos inserir elemento em qualquer posição da árvore binária.Inserção somente no nó-folha;
C
Em uma BST trabalhando com dados numéricos inteiros, cada elemento de valor menor que seu nó
pai é inserido no ramo direito. Valores maiores ficam no ramo esquerdo;
D
Se tivermos uma árvore com somente uma raiz e com o valor 1, e inserirmos, na sequência, o valor 2,
seguido pelo 3, 4 e 5. Isso resultará em uma árvore binária se comportando como se fosse uma lista
encadeada simples, pendendo para o ramo esquerdo. Penderá para o ramo direito;
E
Caso já exista um elemento inserido, tanto no ramo esquerdo quanto no ramo direito de um nó, deve-
se avançar para o próximo nó para tentar a inserção, pois não será possível inserir neste.
Você acertou!
Correto. Como ambos ponteiro já estão ocupados, pulamos par ao próximo e verificamos;
Questão 2/5 - Estrutura de Dados
Filas apresentam características de inserção e remoção na estrutura de dados seguindo a regra do primeiro que entra é o primeiro que sai. Observe o código da fila abaixo construída utilizando listas encadeadas. O código realiza a inserção de um novo elemento nesta fila.
1. NovoElemento->dado = numero
2. se (Head == NULO) então
3. Head = NovoElemento
4. Senão
5. ElementoVarredura = Head
6. enquanto (ElementoVarredura->prox <> NULO)
7. ElementoVarredura = ElementoVarredura->prox
8. Fimenquanto
9. ElementoVarredura->prox = NovoElemento
10. NovoElemento->prox = NULO
11. Fimse
Considerando que NovoElemento é um novo elemento que será inserido nesta fila, ElementoVarredura é uma variável que servirá para localizar o local de inserção, Head é o elemento que está no início da fila, assinale a alternativa CORRETA acerca de filas implementadas com listas encadeadas:
Nota: 20.0
A O último elemento da lista encadeada deverá conter um ponteiro nulo, conforme indicado na linha 9 .Na linha 10.
B
As linhas 6, 7 e 8 indicam nos dizem que, para realizar a inserção, precisamos varrer até localizarmos
o último elemento, o qual não poderá conter um ponteiro nulo. O último conterá um ponteiro nulo.
C
Se o head estiver nulo, significa que podemos inserir um elemento após o head, mesmo que ele esteja
Nulo. Head nulo significa inserir no local do próprio head.
D A varredura pela posição de inserção inicia no primeiro elemento da lista, conforme indicado na linha 5.
Você acertou! Correto.
E
Não seria possível substituir o laço de repetição enquanto por uma para-faça devido a condição de
parada aplicada. É sempre possível substituir um laço de repetição por outro, basta fazer as devidas adaptações.
Questão 3/5 - Estrutura de Dados
Pilhas apresentam características de inserção e remoção na estrutura de dados seguindo a regra do primeiro que entra é o último que sai. Observe o código da pilha abaixo construída utilizando listas encadeadas. O código realiza a inserção de um novo elemento nesta pilha.
1. NovoElemento->dado = numero
2. se (Top == NULO) então
3. NovoElemento->prox = NULO
4. Senão
5. NovoElemento->prox = Top
6. fimse
7. Top = NovoElemento
Considerando que NovoElemento é um novo elemento que será inserido nesta pilha e top é o elemento que está no topo da pilha, assinale a alternativa CORRETA acerca de pilhas implementadas com listas encadeadas:
Nota: 20.0
A
A linha 2 verifica se o topo da pilha está vazio. Caso esteja vazio, significa que não é possível inserir
um novo elemento na pilha. É possível inserir, e a inserção se dá no próprio topo.
B Se tivermos um só elemento na pilha, significa que a lista não terá um topo.Terá um topo e será o próprio único elemento.
C Caso o topo não esteja vazio, fazemos o elemento do topo apontar para o novo elemento.O novo elemento apontará para o topo. Linha 5.
D
Na linha 7, o topo da pilha vira o novo elemento inserida, fazendo com que o antigo topo seja
apagado.
O antigo topo não é apagado, pois na linha 5 fazemos o novo elemento apontar para ele.
E
O topo da pilha é o único elemento que fica armazenado em uma variável conhecida pelo programa.
Todos os outros elementos são acessados a partir dos ponteiros de referencia de cada elemento.
Você acertou!
Correto. Como este código está implementado com listas encadeadas, armazenamos somente o
primeiro elemento.
Questão 4/5 - Estrutura de Dados
Na AULA 4 estudamos árvores binárias.
Acerca de árvore binárias, seus conceitos e suas definições, Assinale a alternativa INCORRETA.
Nota: 20.0
A Uma característica das árvores binárias é que elas são uma estrutura de dados organizadas de maneiranão linear, diferente de uma lista encadeada.
B Uma árvore binária, quando aplicada para uso em algoritmos de busca de dados, deverá ter seus dadosinseridos de uma maneira organizada para facilitar a busca.
C O grau de um nó na árvore binária é calculado a partir de um número de ramificações que cada nó
tem;
D
O grau de uma árvore binária pode ser sempre, e somente, 1 ou 2;
Você acertou!
Pode ser 0, 1 ou 2. AULA 4 \u2013 TEMA1;
E Toda árvore contém um nó inicial denominado de nó raíz;
Questão 5/5 - Estrutura de Dados
No terceiro assunto da disciplina estudamos a estrutura de dados do tipo lista encadeada. O código abaixo representa a inserção em uma lista encadeada.
1. NovoElemento->dado = numero
2. se (Head == NULO) então
3. Head = NovoElemento
4. Head->prox = NULO
5. Senão
6. NovoElemento->prox = Head
7. Head = NovoElemento
8. fimse
Considerando que NovoElemento é um novo elemento que será inserido nesta lista e Head caracteriza o primeiro elemento da lista. Assinale a alternativa CORRETA sobre este algoritmo.
Nota: 20.0
A
O algoritmo apresentado representa uma inserção no final de uma lista encadeada simples, pois um
laço faz a varredura até localizar o final da lista e insere o novo elemento.
Não existe laço que varre até o final da lista.
B
O algoritmo apresentado representa uma inserção no início de uma lista encadeada dupla, pois a linha
6 mostra o novo elemento apontando para o Head.
A lista não é do tipo simples.
C
O algoritmo apresentado representa uma inserção no início de uma lista encadeada simples, pois a
linha 6 mostra o novo elemento apontando para o Head.
Você acertou!
CORRETO \u2013 AULA 3 \u2013 TEMA 2.
D
O algoritmo apresentado representa uma inserção no final de uma lista encadeada dupla, pois um laço
faz a varredura até localizar o final da lista e insere o novo elemento.
Não existe laço que varre até o final da lista e alista é simples.
E
Baseado no algoritmo apresentado, podemos afirmar que este código pertence ao de uma lista
encadeada simples e circular.
Não podemos afirmar que a lista é circular, pois só saberemos caso víssemos o código de inserção no
final da lista.
Questão 1/5 - Estrutura de Dados
No último tópico da AULA 2 vimos algoritmos de busca.
Acerca de algoritmos de busca sequencial e binária, assinale a alternativa INCORRETA:
Nota: 20.0
A
Uma busca binária pode ser implementada utilizando o princípio de dividir para conquistar, e portanto, complexidade O(n²).
Você acertou!
O(logn)
B
A busca binária só funcionará com um vetor de dados já ordenado. Portanto, além de sua complexidade, existe a complexidade atrelada a uma possível ordenação prévia dos dados.
C
O algoritmo de busca sequencial pode ser implementado com um só laço de repetição, caracterizando O(n).
D
A busca sequencial poderá funcionar com um conjunto de dados ordenação ou não ordenado.
E
A busca binária realiza seu algoritmo de localização do dado dividindo o conjunto de dados ao meio, e comparando o valor central com o buscado.
Questão 2/5 - Estrutura de Dados
No terceiro assunto de nossa disciplina estudamos estruturas de dados que se comportam como uma PILHA.Acerca de PILHA, assinale a alternativa INCORRETA:
Nota: 20.0
A
Em uma pilha construída utilizando listas encadeadas. Desempilhar nela significa remover o primeiro elemento desta pilha.
Sim. Remoção no topo.
B
Uma pilha pode só pode ser construída empregando uma estrutura de dados que trabalhe de maneira não sequencial.
Você acertou!
Podemos construir com vetores (sequencial) ou listas (não sequencial).
C
Uma pilha trabalha com inserção e remoção no topo da pilha. Sendo impossível manipular qualquer outra posição da pilha.
Sim. Estrutura do tipo FILO.
D
Em uma pilha construída utilizando listas encadeadas. Empilhar nela significa inserir antes do primeiro elemento desta pilha.
Sim. Inserção no topo.
E
Em uma, a cada nova inserção, os elementos anteriores vão ficando para o final da pilha, só sendo possível removê-los desempilhando.
Sim. FILO.
Questão 3/5 - Estrutura de Dados
No terceiro assunto de nossa disciplina estudamos uma nova estrutura de dados denominada de LISTA ENCADEADA. Um tipo de lista encadeada é a chamada de LISTA ENCADEADA SIMPLES, ou LISTA SIMPLESMENTE ENCADEADA.
Acerca de listas encadeadas simples, assinale a alternativa INCORRETA:
Nota: 20.0
A
Uma lista encadeada simples pode ser do tipo circular. Isto significa que o seu último elemento conterá um ponteiro não nulo e que apontará de volta para ele mesmo, fechando círculo.
Você acertou!
O último elemento aponta para o início da lista de volta, e não para ele mesmo.
B
Uma lista encadeada simples conterá, em cada seu elemento, uma variável do tipo ponteiro que manterá o endereço do próximo elemento da lista encadeada.
C
O uso de ponteiros serve para que, embora cada elemento da lista encadeada esteja disperso na memória do programa, eles possam ser localizados e conectados em uma estrutura de dados.
D
Uma lista encadeada simples pode ser do tipo não circular. Isto significa que o seu último elemento conterá um ponteiro nulo (vazio).
E
Podemos realizar uma inserção em qualquer posição de uma lista encadeada, no início, no fim ou mesmo no meio desta lista.
Questão 4/5 - Estrutura de Dados
Uma função que implementa parte do algoritmo quick sort pode ser vista abaixo. Todo o resto do algoritmo foi omitido para que analisemos somente este método. O algoritmo completo pode ser visto no material PDF da Aula 2.
No código, a função chamada de particao refere-se à função que localiza um pivô no vetor de dados e faz as respectivas trocas dos valores, ordenando seguindo algum critério.
No código, vet é o vetor de dados, e troca é a função que realiza uma troca entre dois valores destoantes utilizando uma variável auxiliar.
1. int particao(int vet[], int p, int u)
2. {
3. int pivo, pivo_pos, i, j;
4. pivo_pos = (p + u) / 2;
5. pivo = vet[pivo_pos];
6.
7. i = p - 1;
8. j = u + 1;
9. while (i < j)
10. {
11.      do
12.      {
13.           j--;
14.      } while (vet[j] > pivo);
15.
16.      do
17.      {
18.           i++;
19.       } while (vet[i] < pivo);
20.
21.       if (i < j)
22.           troca(vet, i, j);
23.       }
24.      return j;
25. }
Acerca deste algoritmo, assinale a alternativa INCORRETA:
Nota: 20.0
A
A variável pivo_pos localiza a posição a qual conterá o valor de referência para comparações com todos os outros valores do vetor.
B
Na linha 11 até a linha 14 comparamos o pivô com todos os valores ao lado direito do mesmo. Caso um valor seja menor que o pivô, ele deve ser colocado para uma posição anterior a do pivô, ou no máximo, no local do pivô.
C
Na linha 16 até a linha 19 comparamos o pivô com todos os valores ao lado esquerdo do mesmo. Caso um valor seja maior que o pivô, ele deve ser colocado para uma posição posterior a do pivô, ou no máximo, no local do pivô.
D
A troca (linha 21 e 22) pode acontecer entre um valor do lado esquerdo e do lado direito, ou entre o próprio pivô e um dos valores destoantes de cada um dos lados.
E
Na linha 4 acessamos a posição do pivô no vetor e na linha 5 acessamos a posição correspondente do vetor conforme calculado na linha 4.
Você acertou!
Primeiro localizamos a posição (linha 4) e depois o valor daquela posição (linha 5).
Questão 5/5 - Estrutura de Dados
No terceiro assunto de nossa disciplina estudamos estruturas de dados que se comportam como uma FILA.
Acerca de FILAS, assinale a alternativa CORRETA:
Nota: 20.0
A
Uma fila onde o primeiro elemento é o 66, o segundo é o 33 e o terceiro é o 99. Inserir na fila significaria inserir um elemento que aponte para o valor 66.
Inseriria depois do valor 99 (inserção no final da fila).
B
Em uma fila, podemos ter a inserção dos dados início desta fila.
Inserção somente no final.
C
Em uma fila, podemos ter a remoção dos dados final ou no meio desta fila.
Remoção somente no início.
D
Em uma fila trabalhamos com o conceito de: \u201co primeiro que entra é o primeiro que sai\u201d.
Você acertou!
Correto. FIFO.
E
Uma fila onde o primeiro elemento é o 66, o segundo é o 33 e o terceiro é o 99. Remover da fila significaria remover o elemento 99.
Removeria o 66 (remoção no início da fila).
Questão 1/5 - Estrutura de Dados
A complexidade de um algoritmo pode ser mensurada matematicamente em termos de uma função de custo
do algoritmo.
Acerca da função custo de um algoritmo, assinale a alternativa CORRETA:
Nota: 20.0
A
A ordem de como os dados de entradas estão organizados não tem impacto no desempenho do
algoritmo em tempo de execução.
Tem impacto. Conforme mostrado na AULA 1 \u2013 TEMA 2.
B
O custo matemático de um algoritmo é dado, exclusivamente, pelo custo de tempo de execução de um algoritmo.
É dado pelo tempo de execução e pelo uso de memória, embora este segundo não esteja sendo
investigado em nossa disciplina.
C
O custo matemático de tempo de execução de um algoritmo pode ser mensurado através da contagem de instruções em uma linguagem de alto nível.
Você acertou!
AULA 1 \u2013 TEMA 2. CORRETO.
D
A função custo é dada em função do tamanho do conjunto de dados de entrada n, ou seja, em função
da quantidade de instruções a serem executadas.
n representa a quantidade de dados a serem manipulados, como por exemplo, um vetor de entrada de tamanho n. E não significa as instruções contadas.
E
O custo de tempo de execução de um algoritmo corresponde a quantos núcleos paralelos o algoritmo
está sendo executado. Tempo de execução significa o quão rápido um algoritmo executa para resolver um problema. Não tendo relação com o paralelismo.
Questão 2/5 - Estrutura de Dados
A recursividade é um recurso de programação bastante empregado, e consiste no ato de uma função em um código realizar chamadas de si mesmo, abrindo diferentes instâncias de uma mesma função na memória do programa. Acerca de recursividade e algoritmos recursivos, assinale a alternativa INCORRETA:
Nota: 20.0
A Diversos problemas computacionais que poderiam ser resolvidos utilizando algoritmos iterativos, ou, seja, laços de repetição, podem também ser resolvidos usando recursividade.
B
Um algoritmo recursivo terá uma complexidade logarítmica, apresentando um desempenho inferior
em tempo de execução superior a um algoritmo construído de forma iterativa.
Você acertou!
AULA 1 \u2013 TEMA 4. O desempenho em tempo de execução é superior.
C Uma possível desvantagem de um algoritmo recursivo é o seu uso de memória mais elevado, uma vez que diversas instâncias de uma mesma função precisam ser alocadas na memória.
D
Um algoritmo que executa uma função denominada de soma, e que realiza a chamada de uma função
denominada compara, não pode ser considerado um algoritmo recursivo, uma vez que não realizada
chamadas de si mesma.
E
Um algoritmo recursivo comumente serve para resolver problemas do tipo \u201cdividir para conquistar\u201d,
onde dividimos um problema em partes menores e mais fáceis de solucionar, para posteriormente
agregar as pequenas soluções em uma maior.
Questão 3/5 - Estrutura de Dados
No primeiro assunto de nossa disciplina investigamos o que são estruturas de dados e como podemos
classificá-las em tipos.
Acerca deste assunto, assinale a alternativa INCORRETA:
Nota:20.0
A Um dado que pode ser decomposto em partes mais simples, é considerado um dado estruturado e, portanto, uma estrutura de dados.
B
Os tipos de dados manipulados por um algoritmo podem ser classificados em duas categorias
distintas: os atômicos, que são dados indivisíveis, e os dados compostos, que podem ser divisíveis em
mais partes menores.
C
Podemos classificar uma estrutura de dados como sendo do tipo homogênea (como registros) ou do
tipo heterogênea (como vetores e matrizes).
Você acertou!
AULA 1 \u2013 TEMA 1. Podemos classificar uma estrutura de dados como sendo do tipo heterogênea
(como registros) ou do tipo homogênea (como vetores e matrizes).
D Uma estrutura homogênea é aquela cujo tipo dos dados nela armazenados são de um único tipo, como inteiro, real, caractere ou lógico
E Uma estrutura contendo dados do tipo caractere e do tipo real pode ser considerada uma estrutura dedados heterogênea.
Questão 4/5 - Estrutura de Dados
Uma implementação do algoritmo de ordenação do tipo bubble sort pode ser visto abaixo. As partes que envolvem impressão de dados na tela e leitura de dados foram omitidas para um melhor entendimento do que é necessário na questão.
X[TAMANHOVETOR], i, j, aux: inteiro
para i de 1 até TAMANHOVETOR faça
para j de 0 até (TAMANHOVETOR - 2) faça
se (X[j] > X[j + 1]) então
aux <- X[j]
X[j] <- X[j + 1]
X[j + 1] <- aux
fimse
fimpara
fimpara
Acerca deste algoritmo, assinale a alternativa CORRETA:
Nota: 20.0
A
O algoritmo apresentado no exercício realizado a ordenação de dados numéricos, inteiros, em ordem
decrescente. Ordenação é crescente.
B
As linhas de código que correspondem a troca dos valores usando uma variável auxiliar poderiam ser
também escritas da seguinte maneira:
aux <- X[j+1]
X[j+1] <- X[j]
X[j] <- aux
Você acertou!
AULA 2 \u2013 TEMA 2. CORRETO.
C
Se precisarmos ordenar dados não numéricos, como caracteres, precisaremos repensar em toda a
lógica do bubble sort, não sendo possível adaptar o código facilmente.
Basta adaptarmos a linha da condicional para funcionar com outro tipo de dado.
D Não é possível implementar o bubble sort com laços de repetição do tipo enquanto.É possível implementar com qualquer tipo de laço, para, enquanto ou repita.
E A complexidade deste algoritmo, para o pior caso, é O(logn).Complexidade O(n²).
Questão 5/5 - Estrutura de Dados
Chamamos de análise assintótica de algoritmos quando encontramos a complexidade de um algoritmo de maneira aproximada através de uma curva de tendência. Este tipo de análise e é a mais adotada para compararmos desempenho de algoritmos.
Acerca da análise assintótica de um algoritmo, assinale a alternativa INCORRETA:
Nota: 20.0
A Um algoritmo com três laços de repetição não encadeados contém uma complexidade assintótica,para o pior caso, O(n).
B Na análise assintótica, fazemos o conjunto de dados de entrada da função custo tender ao infinito,mantendo na equação somente o termo de maior grau, ou seja, aquele que mais cresce na equação.
C Um algoritmo com três laços de repetição aninhados contém uma complexidade assintótica, para o pior caso, O(n³).
D
A complexidade assintótica para o pior caso, também conhecida como BigO, representa o pior
cenário para um algoritmo, ou seja, quando mais instruções precisam ser executadas, levando mais
tempo para finalizar a execução.
E
A complexidade assintótica para o pior caso de um algoritmo contendo dois laços de repetição
aninhados, sendo que o segundo laço só será executado caso uma condicional simples seja verdadeira,
será O(n).
Você acertou!
AULA 1 \u2013 TEMA 3. O pior caso (BigO) nos diz que todas as linhas devem ser executadas, ou seja, a
condicional será sempre verdadeira, e ambos laços de repetição serão sempre executados, sendo
assim, complexidade O(n²).
Questão 2/5 - Estrutura de Dados
No terceiro assunto de nossa disciplina estudamos estruturas de dados que se comportam como uma FILA.
Acerca de FILAS, assinale a alternativa CORRETA:
Nota: 20.0
A Uma fila onde o primeiro elemento é o 66, o segundo é o 33 e o terceiro é o 99. Inserir na fila significaria inserir um elemento que aponte para o valor
66.
Inseriria depois do valor 99 (inserção no final da fila).
B Em uma fila, podemos ter a inserção dos dados início desta fila.
Inserção somente no final.
C Em uma fila, podemos ter a remoção dos dados final ou no meio desta fila.
Remoção somente no início.
D Em uma fila trabalhamos com o conceito de: \u201co primeiro que entra é o primeiro que sai\u201d.
Você acertou!
Correto. FIFO.
E Uma fila onde o primeiro elemento é o 66, o segundo é o 33 e o terceiro é o 99. Remover da fila significaria remover o elemento 99.
Removeria o 66 (remoção no início da fila).
Questão 3/5 - Estrutura de Dados
No terceiro assunto de nossa disciplina estudamos uma nova estrutura de dados denominada de LISTA ENCADEADA.
Acerca de listas encadeadas, assinale a alternativa CORRETA:
Nota: 20.0
A Uma lista encadeada trabalha com alocação sequencial na memória. De maneira similar a uma estrutura de dados do tipo vetor.
Uma lista é não sequencial.
B Uma lista encadeada trabalha com o conceito de índice. Ou seja, podemos acessar qualquer posição da lista usando o seu índice como referência.
Não existe o conceito de índice em uma lista encadeada.
C O acesso a qualquer dado em uma lista pode ser feito com a mesma eficiência em tempo de execução, caracterizando uma complexidade de acesso
aos dados como O(1).
Complexidade de acesso é O(n).
D Podemos localizar o próximo elemento da lista encadeada através do uso de uma variável que armazena o endereço do próximo elemento da lista.
Você acertou!
CORRETO. Basta usar uma variável do tipo ponteiro.
E Cada elemento de uma lista encadeada só poderá armazenar dados do tipo numérico. Não é permitido o uso de dados do tipo caractere ou lógico,
por exemplo.
Qualquer tipo de dados é permitido.
Questão 4/5 - Estrutura de Dados
Assuma um vetor de dimensão 10 com dados numéricos e inteiros colocados na seguinte ordem:
| 05 | 07 | 08 | 14 | 24 | 29 | 56 | 77 | 78 | 88 |
Suponha que você deseja implementar um algoritmo de busca para localizar algum dado neste vetor já ordenado de maneira crescente. Você resolve testar a busca sequencial e a busca binária.
Acerca destes algoritmos e analisando o vetor acima, assinale a alternativa CORRETA:
Nota: 20.0
A No algoritmo de busca sequencial, o valor 24 seria localizado na 6ª tentativa, se fizermos uma varredura da esquerda para a direita.
Na 5ª tentativa.
B No algoritmo de busca binária, o valor 24 seria localizado na 3ª tentativa.
Na 1ª tentativa.
C No algoritmo de busca sequencial, o valor 77 seria localizado mais rapidamente que se comparado com a busca binária.
Binária se sairia mais rápida.
D No algoritmo de busca sequencial, o valor 07 seria localizado mais rapidamente que se comparado com a busca binária.
Você acertou!
CORRETO. Levará menos iterações.
E Em nenhum cenário de busca o algoritmo sequencial irá localizar o valor antes da busca binária.
É possível que sim, a sequencial ache antes. Dependerá o valor buscado e onde ele se localizado no vetor.
Questão 5/5 - Estrutura de Dados
Uma função que implementa o algoritmo bubble sort pode ser vista abaixo. Todo o resto do algoritmo foi omitido para que analisemos somente o método de ordenação. No código, TAMANHOVETOR refere a um valor inteiro que corresponde a dimensão do vetor de dados.
1 - void BubbleSort(int vet[]) {
2 - int aux;
3 - for (int n = 1; n <= TAMANHOVETOR; n++) {
4 - for (int i = 0; i < (TAMANHOVETOR - 1); i++) {
5 - if (vet[i] < vet[i + 1]) {
6 - aux = vet[i];
7 - vet[i] = vet[i + 1];
8 - vet[i + 1] = aux;
9 - } } } }
Acerca deste algoritmo, assinale a alternativa CORRETA:
Nota: 20.0
A Na linha 5, o sinal de MENOR está incorreto. O algoritmo do bubble sort deve apresentar um sinal de MAIOR nesta linha.
Tanto faz o sinal. Invertendo sinal inverte a forma como irá ordenar, o que não caracteriza um erro.
B Não é possível substituir os laços de repetição do tipo PARA (FOR) por um laço do tipo REPITA (DO-WHILE).
É possível implementarcom qualquer laço de repetição.
C Não é possível substituir os laços de repetição do tipo PARA (FOR) por um laço do tipo ENQUANTO (WHILE).
É possível implementar com qualquer laço de repetição.
D Na linha 3, seria possível fazer a variável n iniciar em zero e terminar em (TAMANHOVETOR-1)
Você acertou!
CORRETO. AULA 2 \u2013 TEMA 2 e conceitos básicos de programação e algoritmos.
E A variável chamada de aux neste código tem como objetivo armazenar temporariamente o vetor de dados completo, para posteriormente ser
ordenado.
Ela serve para ajudar na troca individual de cada elemento.
Apol 3...
Questão 1/5 - Estrutura de Dados
No terceiro assunto da disciplina estudamos a estrutura de dados do tipo lista encadeada. O código abaixo representa cada
elemento de uma lista duplamente encadeada.
1. registro ElementoDaLista_Dupla
2. dado: inteiro
3. prox: ElementoDaLista[->)
4. ant: ElementoDaLista[->)
5. fimregistro
Acerca de lista encadeadas duplas, assinale a alternativa INCORRETA:
Nota: 20.0
A O código de criação da estrutura de uma lista encadeada dupla, conforme apresentado acima, é igual para uma circular e uma não circular.
B O código acima representa uma lista não circular, pois uma lista dupla e circular deveria conter um ponteiro para o próximo elemento da lista, outro
ponteiro para o elemento anterior da lista e também um ponteiro para o primeiro elemento da lista.
Você acertou!
Não existe o ponteiro para o primeiro elemento. Somente o ultimo elemento aponta de volta para o primeiro.
C O código acima pode representar uma lista encadeada dupla não circular, pois conterá um ponteiro para o próximo elemento da lista e um para o
elemento anterior da lista.
D Se removermos a linha 4, transformamos a lista encadeada dupla em uma simples.
E Um inserção no final da lista encadeada e circular, significaria fazer com o que o novo elemento inserido no final tivesse seu ponteiro para o próximo
elemento apontando de volta para o início da lista encadeada.
Questão 2/5 - Estrutura de Dados
Na AULA 4 estudamos árvores binárias.
Acerca de árvore binárias e a visualização dos dados em uma árvore construída para funcionar como uma Binary Search Tree, e considerando uma árvore binária onde os elementos menores ficam no ramo esquerdo e os maiores no ramo direito, assinale a alternativa CORRETA.
Nota: 20.0
A Como a árvore binária não apresenta sequência/ordem fixas, podemos listar seus dados de diferentes maneiras: pré-ordem, ordem e pós-ordem.
Você acertou!
B Uma visualização da árvore em ordem significa lista os elementos em ordem decrescente.
Ordenação crescente;
C Se fizermos uma listagem iniciando na direita, depois a raiz e depois o ramo esquerdo estaremos listando os elementos de maneira crescente.
Decrescente;
D A impressão de valores em pré-ordem resultará em uma impressão inversa/oposto da em pós-ordem.
Não existe a relação de oposição
Questão 1/10 - Estrutura de Dados
Filas apresentam características de inserção e remoção na estrutura de dados seguindo a regra do primeiro que entra é o primeiro que sai. Observe o código da fila abaixo construída utilizando listas encadeadas. O código realiza a inserção de um novo elemento nesta fila.
1. NovoElemento->dado = numero
2. se (Head == NULO) então
3.      Head = NovoElemento
4. Senão
5.      ElementoVarredura = Head 
6.      enquanto (ElementoVarredura->prox <> NULO)
7.           ElementoVarredura = ElementoVarredura->prox
8.      Fimenquanto
9.      ElementoVarredura->prox = NovoElemento
10.    NovoElemento->prox = NULO
11. Fimse
Considerando que NovoElemento é um novo elemento que será inserido nesta fila, ElementoVarredura é uma variável que servirá para localizar o local de inserção, Head é o elemento que está no início da fila, assinale a alternativa CORRETA acerca de filas implementadas com listas encadeadas:
Nota: 10.0
	
	A
	O último elemento da lista encadeada deverá conter um ponteiro nulo, conforme indicado na linha 9.
Na linha 10.
	
	B
	As linhas 6, 7 e 8 indicam nos dizem que, para realizar a inserção, precisamos varrer até localizarmos o último elemento, o qual não poderá conter um ponteiro nulo.
O último conterá um ponteiro nulo.
	
	C
	Se o head estiver nulo, significa que podemos inserir um elemento após o head, mesmo que ele esteja nulo
Head nulo significa inserir no local do próprio head.
	
	D
	A varredura pela posição de inserção inicia no primeiro elemento da lista, conforme indicado na linha 5.
Você acertou!
Correto.
	
	E
	Não seria possível substituir o laço de repetição enquanto por uma para-faça devido a condição de parada aplicada.
É sempre possível substituir um laço de repetição por outro, basta fazer as devidas adaptações.
Questão 2/10 - Estrutura de Dados
Uma função que implementa parte do algoritmo quick sort pode ser vista abaixo. Todo o resto do algoritmo foi omitido para que analisemos somente este método. O algoritmo completo pode ser visto no material PDF da Aula 2.
No código, a função chamada de particao refere-se à função que localiza um pivô no vetor de dados e faz as respectivas trocas dos valores, ordenando seguindo algum critério. 
No código, vet é o vetor de dados, e troca é a função que realiza uma troca entre dois valores destoantes utilizando uma variável auxiliar.
1. int particao(int vet[], int p, int u) 
2. {
3. int pivo, pivo_pos, i, j;
4. pivo_pos = (p + u) / 2;
5. pivo = vet[pivo_pos];
6. 
7. i = p - 1;
8. j = u + 1;
9. while (i < j)
10. {
11.      do 
12.      {
13.           j--;
14.      } while (vet[j] > pivo);
15. 
16.      do 
17.      {
18.           i++;
19.       } while (vet[i] < pivo);
20. 
21.       if (i < j)
22.           troca(vet, i, j);
23.       }
24.      return j;
25. }
Acerca deste algoritmo, assinale a alternativa INCORRETA:
Nota: 10.0
	
	A
	A variável pivo_pos localiza a posição a qual conterá o valor de referência para comparações com todos os outros valores do vetor.
	
	B
	Na linha 11 até a linha 14 comparamos o pivô com todos os valores ao lado direito do mesmo. Caso um valor seja menor que o pivô, ele deve ser colocado para uma posição anterior a do pivô, ou no máximo, no local do pivô.
	
	C
	Na linha 16 até a linha 19 comparamos o pivô com todos os valores ao lado esquerdo do mesmo. Caso um valor seja maior que o pivô, ele deve ser colocado para uma posição posterior a do pivô, ou no máximo, no local do pivô.
	
	D
	A troca (linha 21 e 22) pode acontecer entre um valor do lado esquerdo e do lado direito, ou entre o próprio pivô e um dos valores destoantes de cada um dos lados.
	
	E
	Na linha 4 acessamos a posição do pivô no vetor e na linha 5 acessamos a posição correspondente do vetor conforme calculado na linha 4.
Você acertou!
Primeiro localizamos a posição (linha 4) e depois o valor daquela posição (linha 5).
Questão 3/10 - Estrutura de Dados
No último tópico da AULA 2 vimos algoritmos de busca.
Acerca de algoritmos de busca sequencial e binária, assinale a alternativa INCORRETA:
Nota: 10.0
	
	A
	Uma busca binária pode ser implementada utilizando o princípio de dividir para conquistar, e portanto, complexidade O(n²).
Você acertou!
O(logn)
	
	B
	A busca binária só funcionará com um vetor de dados já ordenado. Portanto, além de sua complexidade, existe a complexidade atrelada a uma possível ordenação prévia dos dados.
	
	C
	O algoritmo de busca sequencial pode ser implementado com um só laço de repetição, caracterizando O(n).
	
	D
	A busca sequencial poderá funcionar com um conjunto de dados ordenação ou não ordenado.
	
	E
	A busca binária realiza seu algoritmo de localização do dado dividindo o conjunto de dados ao meio, e comparando o valor central com o buscado.
Questão 4/10 - Estrutura de Dados
No terceiro assunto de nossa disciplina estudamos estruturas de dados que se comportam como uma PILHA.
Acerca de PILHA, assinale a alternativa INCORRETA:
Nota: 10.0
	
	A
	Em uma pilha construída utilizando listas encadeadas. Desempilhar nela significa remover o primeiro elemento desta pilha.
Sim. Remoção no topo.
	
	B
	Uma pilha pode só podeser construída empregando uma estrutura de dados que trabalhe de maneira não sequencial.
Você acertou!
Podemos construir com vetores (sequencial) ou listas (não sequencial).
	
	C
	Uma pilha trabalha com inserção e remoção no topo da pilha. Sendo impossível manipular qualquer outra posição da pilha.
Sim. Estrutura do tipo FILO.
	
	D
	Em uma pilha construída utilizando listas encadeadas. Empilhar nela significa inserir antes do primeiro elemento desta pilha.
Sim. Inserção no topo.
	
	E
	Em uma, a cada nova inserção, os elementos anteriores vão ficando para o final da pilha, só sendo possível removê-los desempilhando.
Sim. FILO.
Questão 5/10 - Estrutura de Dados
O algoritmo de ordenação por intercalação, também conhecido como merge sort, é um dos algoritmos estudados na AULA 2.
Acerca deste algoritmo, assinale a alternativa CORRETA.
Nota: 10.0
	
	A
	A complexidade do merge sort é O(logn), pois o algoritmo trabalha com o princípio de dividir para conquistar.
O(n.logn), pois temos duas funções.
	
	B
	O processo do merge sort consiste em dividir uma estrutura de dados de tamanho n (um vetor por exemplo) em 4 partes e ordenar estar partes, agregando-as posteriormente.
O processo do merge sort consiste em dividir uma estrutura de dados de tamanho n (um vetor por exemplo) em n partes de tamanho unitário.
	
	C
	Ao dividir o conjunto de dado em duas partes menores, o merge sort sempre calcula a posição central da ruptura, que é dada pela média entre os valores posição inicial com a posição final, arredondando para cima.
É feito um truncamento somente da parte inteira.
	
	D
	A intercalação é realizada utilizando um vetor auxiliar para ir armazenando os dados que vão sendo ordenados naquele momento.
Você acertou!
AULA 2 – TEMA 3. Figura 10.
	
	E
	A função merge sort pode ser implementada de forma recursiva, ou seja, realizando chamadas de si mesma até que o conjunto de dados seja indivisível. A ordenação só ocorre quando as partes menores forem agregadas novamente.
A ordenação ocorre nas partes menores e indivisíveis.
Questão 6/10 - Estrutura de Dados
Uma implementação do algoritmo de ordenação do tipo bubble sort pode ser visto abaixo. As partes que envolvem impressão de dados na tela e leitura de dados foram omitidas para um melhor entendimento do que é necessário na questão. 
X[TAMANHOVETOR], i, j, aux: inteiro
para i de 1 até TAMANHOVETOR faça 
     para j de 0 até (TAMANHOVETOR - 2) faça 
          se (X[j] > X[j + 1]) então 
               aux <- X[j]
               X[j] <- X[j + 1]
               X[j + 1] <- aux
          fimse
     fimpara
fimpara
Acerca deste algoritmo, assinale a alternativa CORRETA:
Nota: 10.0
	
	A
	O algoritmo apresentado no exercício realizado a ordenação de dados numéricos, inteiros, em ordem decrescente.
Ordenação é crescente.
	
	B
	As linhas de código que correspondem a troca dos valores usando uma variável auxiliar poderiam ser também escritas da seguinte maneira:
aux <- X[j+1]
X[j+1] <- X[j]
X[j] <- aux
Você acertou!
AULA 2 – TEMA 2. CORRETO.
	
	C
	Se precisarmos ordenar dados não numéricos, como caracteres, precisaremos repensar em toda a lógica do bubble sort, não sendo possível adaptar o código facilmente.
Basta adaptarmos a linha da condicional para funcionar com outro tipo de dado.
	
	D
	Não é possível implementar o bubble sort com laços de repetição do tipo enquanto.
É possível implementar com qualquer tipo de laço, para, enquanto ou repita.
	
	E
	A complexidade deste algoritmo, para o pior caso, é O(logn).
Complexidade O(n²).
Questão 7/10 - Estrutura de Dados
A recursividade é um recurso de programação bastante empregado, e consiste no ato de uma função em um código realizar chamadas de si mesmo, abrindo diferentes instâncias de uma mesma função na memória do programa.
Acerca de recursividade e algoritmos recursivos, assinale a alternativa INCORRETA:
Nota: 10.0
	
	A
	Diversos problemas computacionais que poderiam ser resolvidos utilizando algoritmos iterativos, ou seja, laços de repetição, podem também ser resolvidos usando recursividade.
	
	B
	Um algoritmo recursivo terá uma complexidade logarítmica, apresentando um desempenho inferior em tempo de execução superior a um algoritmo construído de forma iterativa.
Você acertou!
AULA 1 – TEMA 4. O desempenho em tempo de execução é superior.
	
	C
	Uma possível desvantagem de um algoritmo recursivo é o seu uso de memória mais elevado, uma vez que diversas instâncias de uma mesma função precisam ser alocadas na memória.
	
	D
	Um algoritmo que executa uma função denominada de soma, e que realiza a chamada de uma função denominada compara, não pode ser considerado um algoritmo recursivo, uma vez que não realizada chamadas de si mesma.
	
	E
	Um algoritmo recursivo comumente serve para resolver problemas do tipo “dividir para conquistar”, onde dividimos um problema em partes menores e mais fáceis de solucionar, para posteriormente agregar as pequenas soluções em uma maior.
Questão 8/10 - Estrutura de Dados
No terceiro assunto da disciplina estudamos a estrutura de dados do tipo lista encadeada. O código abaixo representa cada elemento de uma lista duplamente encadeada.
1. registro ElementoDaLista_Dupla
2. dado: inteiro
3.      prox: ElementoDaLista[->)
4.      ant: ElementoDaLista[->)
5. fimregistro
Acerca de lista encadeadas duplas, assinale a alternativa INCORRETA:
Nota: 10.0
	
	A
	O código de criação da estrutura de uma lista encadeada dupla, conforme apresentado acima, é igual para uma circular e uma não circular.
	
	B
	O código acima representa uma lista não circular, pois uma lista dupla e circular deveria conter um ponteiro para o próximo elemento da lista, outro ponteiro para o elemento anterior da lista e também um ponteiro para o primeiro elemento da lista.
Você acertou!
Não existe o ponteiro para o primeiro elemento. Somente o ultimo elemento aponta de volta para o primeiro.
	
	C
	O código acima pode representar uma lista encadeada dupla não circular, pois conterá um ponteiro para o próximo elemento da lista e um para o elemento anterior da lista.
	
	D
	Se removermos a linha 4, transformamos a lista encadeada dupla em uma simples.
	
	E
	Um inserção no final da lista encadeada e circular, significaria fazer com o que o novo elemento inserido no final tivesse seu ponteiro para o próximo elemento apontando de volta para o início da lista encadeada.
Questão 9/10 - Estrutura de Dados
Uma função que implementa parte do algoritmo merge sort pode ser vista abaixo. Todo o resto do algoritmo foi omitido para que analisemos somente este método. O algoritmo completo pode ser visto no material PDF da Aula 2.
No código, inicio e fim são variáveis inteiras que correspondem a posições no vetor de dados, parteinteira significa truncar em zero casas decimais o respectivo cálculo da linha 6 e intercala refere-se a uma função que realiza a ordenação neste método.
1. Função mergesort(X, inicio, fim) 
2. Var
3.      Meio: inteiro
4. Inicio
5.      Se (inicio < fim) então
6.           Meio <- parteinteira((inicio + fim) / 2)
7.          mergesort(X, inicio, meio)
8.          mergesort(X, meio + 1, fim)
9.           Intercala(X, inicio, fim, meio)
10.    Fimse
11. funfunção
A assumindo que a dimensão do vetor de dados X é 10, e que a primeira chamada da função mergesort foi realizada com os seguintes parâmetros: Função mergesort(X, 0, 9).
Acerca deste algoritmo, assinale a alternativa INCORRETA:
Nota: 10.0
	
	A
	Na segunda instância aberta da função mergesort na memória do programa, a variável inicio vale zero e a variável meio vale 2.
	
	B
	Na primeira instância aberta da função mergesort na memória do programa, a variável meio corresponde ao valor 4.
	
	C
	Na segunda instância aberta da função mergesort na memória do programa, a variável inicio vale zero e a variável fim vale 2.
Você acertou!
Fim vale 4.
	
	D
	Na terceira instância aberta da função mergesort na memória do programa, a variável inicio vale zero e a variável fim vale 2.
	
	E
	Na primeira instância aberta da função mergesort na memóriado programa, a variável inicio vale zero e a variável fim vale 9.
Questão 10/10 - Estrutura de Dados
No terceiro assunto de nossa disciplina estudamos estruturas de dados que se comportam como uma FILA.
Acerca de FILAS, assinale a alternativa CORRETA:
Nota: 10.0
	
	A
	Uma fila onde o primeiro elemento é o 66, o segundo é o 33 e o terceiro é o 99. Inserir na fila significaria inserir um elemento que aponte para o valor 66.
Inseriria depois do valor 99 (inserção no final da fila).
	
	B
	Em uma fila, podemos ter a inserção dos dados início desta fila.
Inserção somente no final.
	
	C
	Em uma fila, podemos ter a remoção dos dados final ou no meio desta fila.
Remoção somente no início.
	
	D
	Em uma fila trabalhamos com o conceito de: “o primeiro que entra é o primeiro que sai”.
Você acertou!
Correto. FIFO.
	
	E
	Uma fila onde o primeiro elemento é o 66, o segundo é o 33 e o terceiro é o 99. Remover da fila significaria remover o elemento 99.
Removeria o 66 (remoção no início da fila).
Questão 1/10 - Estrutura de Dados
Na AULA 6 estudamos endereçamento aberto de tabelas hash com tentativa linear e tentativa quadrática.
Acerca da tentativa linear e da tentativa quadrática, assinale a alternativa INCORRETA:
Nota: 10.0
	
	A
	Na tentativa linear, quando uma colisão ocorre, a próxima posição livre, subsequente, é acessada.
	
	B
	Na tentativa quadrática, quando uma colisão ocorre, a primeira posição a ser testada após a colisão é sempre a posição seguinte do vetor.
	
	C
	Na tentativa quadrática, quando uma colisão ocorre, a nova tentativa é feita em uma posição que está a uma distância d da posição originalmente testada. Onde d será sempre o dobro da posição originalmente testada.
Você acertou!
O cálculo de d não é o dobro. A equação é apresentada na página 20 da AULA 6.
	
	D
	A função hash adotada independe do tipo de tentativa empregado (linear ou quadrática).
	
	E
	A tentativa quadrática tende a espalhar mais as chaves colididas na tabela hash.
Questão 2/10 - Estrutura de Dados
Na AULA 5 estudamos conceitos de grafos. Abaixo temos uma imagem de um grafo.
Acerca do grafo acima, assinale a alternativa CORRETA.
Nota: 10.0
	
	A
	O grafo contém arestas múltiplas, pois temos mais de um caminho para sair de V1 e chegar em V9, por exemplo.
Arestas múltiplas são para arestas com os mesmos vértices de origem e destino.
	
	B
	O grau do vértice V9 é 3.
O grau é 4. Pois é o número de arestas incidentes.
	
	C
	Todos os vértices deste grafo têm o mesmo grau.
Temos graus diferentes: 2, 3 e 4.
	
	D
	Este grafo é do tipo completo.
No grafo completo, todos os vértices precisam estar conectados entre si por somente uma aresta. Neste grafo faltam diversas conexões.
	
	E
	O grau do vértice V4 é 3.
Você acertou!
Correto. Pois é o número de arestas incidentes.
Questão 3/10 - Estrutura de Dados
Na AULA 4 estudamos conceitos de árvores binárias. Acerca de árvores, assinale a alternativa abaixo:
1. ElementoDaArvoreBinaria *NovoElemento = NULL;
2. NovoElemento = (ElementoDaArvoreBinaria *)malloc(sizeof(ElementoDaArvoreBinaria));
3. NovoElemento->esquerda = NULL;
4. NovoElemento->direita = NULL;
5. 
6. NovoElemento->dado = num;
7. *ElementoVarredura = NovoElemento;
Acerca de árvores e seus aspectos construtivos, assinale a alternativa INCORRETA.
Nota: 10.0
	
	A
	O código refere a inicialização de um nó da árvore, onde alocamos a variável na memória e inicializamos os campos do registro.
Linha 2 contém a alocação, linhas 3, 4 e 5 contém a inicialização.
	
	B
	Baseado no código acima, podemos afirmar com certeza que o registro que armazena cada elemento da árvore contém um dado do tipo inteiro e dois ponteiros.
Você acertou!
Não sabemos o tipo do dado pelo código acima.
	
	C
	Na linha 2 alocamos uma variável na memória destinada ao programa. O espaço alocado é igual a quantidade de Bytes usada pelo registro ElementoDaArvoreBinaria.
Sim. A função malloc em C faz alocação e a função sizeof diz o tamanho a ser alocado.
	
	D
	Na linha 1, a variável NovoElemento é declarada como sendo um ponteiro para um tipo de variável chamado ElementoDaArvoreBinaria.
Sim. O asterisco indicará o ponteiro;
	
	E
	Nas linhas 3, 4 e 6 estamos acessando os campos de um registro. Em linguagem C, um campo de uma variável ponteiro é acessado com uma flecha para a direta ‘->’, e não com um PONTO. Se usarmos PONTO neste caso, como por exemplo NovoElemento.esquerda, não irá funcionar.
Exatamente;
Questão 4/10 - Estrutura de Dados
O método da divisão é um tipo de função hash bastante empregado na construção de tabelas hash.
Assuma que você tem disponível, para utilizar como palavras-chave, valores numéricos inteiros de 4 dígitos. Você decide que irá agrupar os dígitos em pares e somá-los para usar como palavra-chave. Por exemplo, o número 1234, será: 12 + 34 = 46.
Assuma também que você tem um vetor de dimensão 100 (posições 0 até 99) disponível para armazenamento e que irá adotar o método da divisão. Assinale a alternativa INCORRETA:
Nota: 10.0
	
	A
	A palavra-chave 0125 será inserida na posição 26. Porém, se alterarmos o tamanho do vetor para 110, a nova posição desta chave será 36.
Você acertou!
Neste caso, a chave continuará na posição 26 para o vetor 100 e para o 110.
	
	B
	A palavra-chave 4455, será inserida na última posição disponível do vetor.
44+55 = 99 MOD 100 = 99. 99 é a ultima posição possível deste vetor.
	
	C
	A palavra-chave 9128, será inserida na posição 19 do vetor.
91+28 = 119 MOD 100 = 19.
	
	D
	O maior valor possível representado com 4 dígitos será colocado na posição 98.
O maior valor com 4 dígitos é 9999 = 99+99 = 198 MOD 100 = 98.
	
	E
	A palavra-chave 1873, será inserida na posição 91 do vetor.
18+73 = 91 MOD 100 = 91.
Questão 5/10 - Estrutura de Dados
Trabalhamos com diferentes tipos de endereçamento em uma tabela hash.
Acerca dos tipos de endereçamento (direto, aberto e em cadeia), assinale a alternativa CORRETA:
Nota: 10.0
	
	A
	O endereçamento aberto é mais empregado quando a quantidade de palavras-chaves é bastante grande se comparado com o tamanho da tabela hash.
Empregado quando a quantidade de palavras-chaves é pequena se comparado com o tamanho da tabela hash.
	
	B
	No endereçamento aberto a tabela hash é construída com um vetor, que armazenará todas as chaves que não colidirem.
Armazena inclusive as que colidem. Porém, as colididas precisam ser tratadas e inseridas em outra posição.
	
	C
	No endereçamento aberto, quando uma colisão ocorre, ela precisa ser tratada com algum algoritmo, como o de tentativa linear e a quadrática.
Você acertou!
Aula 6 – TEMAS 3 e 4
	
	D
	No endereçamento em cadeia não precisamos tratar colisões, pois cada nova chave pode ser anexada em uma lista encadeada que contém todas as chaves que colidiram.
As listas encadeadas armazenam todas as chaves em cada posição. Colididas ou não.
	
	E
	As funções de hash aplicadas para endereçamento em cadeia são diferentes das aplicadas no endereçamento aberto.
São as mesmas funções.
Questão 6/10 - Estrutura de Dados
Na AULA 5 estudamos conceitos de grafos e suas representações matemáticas
Acerca do grafo e suas representações matemáticas, assinale a alternativa INCORRETA.
Nota: 10.0
	
	A
	Na representação por lista de adjacências, temos um conjunto de listas encadeadas, onde cada lista conterá todos os vizinhos de um único vértice;
	
	B
	Uma representação por matriz de incidências representa um grafo na forma de uma matriz, onde as linhas são os vértices e as colunas as arestas;
	
	C
	Uma representação por matriz de adjacências representa um grafo na forma de uma matriz, onde as linhas e as colunas são os vértices;
	
	D
	Uma representação por lista de adjacências representa um grafo na forma de um conjunto de listas encadeadas.;
	
	E
	Na representação por lista de adjacências não podemos repetir um vértice em duas listas encadeadas distintas.
Você acertou!
Podemos repetir, pois cada lista conterá todos os vizinhos de cada vértice.
Questão 7/10 - Estrutura de Dados
Na AULA 4 estudamos as diferentes consultas em árvoresbinárias. Observe o código de consulta em ordem na árvore, assumindo que os dados cadastrados são do tipo inteiro. 
1. void Consultar_EmOrdem(ElementoDaArvoreBinaria * ElementoVarredura)
2. {
3.      if (ElementoVarredura)
4.      {
5.           Consultar_EmOrdem(ElementoVarredura->esquerda);
6.           printf("%d\t", ElementoVarredura->dado);
7.           Consultar_EmOrdem(ElementoVarredura->direita);
8.      }
9. }
Acerca de consulta em árvore e do código acima, alternativa CORRETA.
Nota: 10.0
	
	A
	A linha 7 poderá nunca ser executada no código acima. Basta que não exista nenhum elemento para a direita.
Existindo elemento para a direita, ou não, a linha 7 é executada, pois não temos nenhum teste condicional que impeça isso.
	
	B
	A linha 3 verifica se a variável ElementoVarredura é igual a zero.
Ela verifica se a variável está NULA (vazia). Que é um conceito diferente de verificar se é igual a valor numérico zero.
	
	C
	A impressão dos dados em pré-ordem poderia ser feita se invertêssemos as linhas 6 e 7.
O correto seria inverter as linhas 5 e 6.
	
	D
	A impressão dos dados em pós-ordem poderia ser feita se invertêssemos as linhas 5 e 7.
O correto seria inverter as linhas 6 e 7.
	
	E
	Se quiséssemos imprimir os elementos da árvore de maneira decrescente, ou seja, do maior para o menor, poderíamos trocar as linhas 5 e 7.
Você acertou!
CORRETO. A consulta EM ORDEM, por padrão é crescente. Se invertermos a ordem fica decrescente.
Questão 8/10 - Estrutura de Dados
Na AULA 5 estudamos grafos e seus algoritmos de busca.
Acerca da busca em largura no grafo, assinale a alternativa INCORRETA.
Nota: 10.0
	
	A
	A busca em profundidade trabalha com o uma fila, a qual mantém todos os vértices que ainda serão visitados.
	
	B
	Um vértice conectado por uma aresta com o vértice de origem contém distância um.
	
	C
	A busca em largura trabalha com o conceito de distâncias, onde sempre acessamos um vizinho que está a um salto de distância do vértice atualmente visitado e que já tenha sido visitado.
Você acertou!
Que não tenha sido visitado ainda.
	
	D
	Quando percorremos a lista de vizinhos de um vértice, vamos colocando cada vizinho ainda não visitado na fila, pois eles serão os próximos a serem acessados.
	
	E
	O vértice de origem é aquele cuja distância é zero.
Questão 9/10 - Estrutura de Dados
Na AULA 5 estudamos grafos e o algoritmo de caminho mínimo.
Acerca do algoritmo de caminho mínimo Djikstra, assinale a alternativa CORRETA.
Nota: 10.0
	
	A
	Este algoritmo só é capaz de definir um menor caminho caso grafo seja ponderado.
Podemos usar um grafo ponderado, mas isso não é obrigatório. Caso ele não seja ponderado, significa que todas as arestas terão peso um, e caso a métrica seja aditiva, teremos que o menor caminho será o menor número de saltos possíveis.
	
	B
	O Djikstra só é capaz de definir a melhor rota seguindo uma métrica denominada de aditiva.
Podemos usar diferentes métricas. A aditiva é a mais comum.
	
	C
	Quando não existe um caminho entre dois vértices, representamos como se a rota entre eles no vetor de distâncias tem um peso infinito (variável de valor extremamente alto).
Você acertou!
Correto. AULA 5 – TEMA 4.
	
	D
	O caminho de um vértice V0 até um vértice V2, passando por um vértice V1, utilizando métrica aditiva, será a soma dos pesos de V0 para V1 e V0 para V2.
Será a soma de V0 para V1 e V2 para V2.
	
	E
	O vértice de origem sempre terá um caminho infinito para si próprio.
O vértice de origem para ele mesmo será peso zero do caminho.
Questão 10/10 - Estrutura de Dados
A definição de uma boa função hash é fundamental para termos uma tabela hash com um bom desempenho.
Acerca de funções hash, assinale a alternativa CORRETA:
Nota: 10.0
	
	A
	Uma função hash apresenta sempre a mesma fórmula bem definida, e independe do tamanho do conjunto de dados, e dos tipos de dados-chave utilizados.
Uma função hash não apresenta uma fórmula definida, e deve ser projetada levando em consideração o tamanho do conjunto de dados, seu comportamento e os tipos de dados-chave utilizados.
	
	B
	O uso de estrutura de tabela hash sempre apresentará um desempenho de busca superior ao endereçamento direito.
Nem sempre. Se a função hash adotada é muito complexa, talvez apresente um desempenho inferior. Portanto, escolher a função hash adequada é fundamental.
	
	C
	Uma função hash necessita inserir dados que minimizem o número de colisões, reduzindo também o tempo gasto resolvendo colisões e reavendo os dados.
Você acertou!
Correto. AULA 6 – TEMA 2.
	
	D
	A função hash que utiliza o método da divisão só pode ser aplicado para palavras-chave do tipo numérica.
Qualquer tipo de dado pode ser usado no método da divisão.
	
	E
	O método da divisão utiliza o quociente da divisão de dois valores para encontrar a posição de uma palavra-chave.
Não é o quociente da divisão, mas sim o resto da divisão.
Questão 1/12 - Estrutura de Dados
Lista é um conceito de trabalho, uma metodologia com regras, similar a Pilhas e Filas.
Para a montagem das Listas utilizamos alocação dinâmica de memória, ponteiros e registros.
16/06/2018 AVA UNIVIRTUS2/10
Com base nisso e com as afirmações a seguir, responda:
I \u2013 Assim como Pilhas e Filas, em Listas somente podemos incluir no início ou no final de uma lista.
II \u2013 Diferente de Pilhas e Filas, em Listas podemos incluir no meio de uma Lista.
III \u2013 Em Listas podemos incluir de forma ordenada as informações. Deste modo, podemos em uma mesma
Lista incluir no início, no final ou no meio (entre dois registros).
Considerando o conteúdo ministrado na aula 6, assinale a alternativa com a sequência CORRETA.
Nota: 10.0
A Somente a questão I está correta.
B Somente a questão II está correta.
C Somente a questão III está correta.
D Estão corretas as questões I e II.
E
Estão corretas as questões II e III.
Você acertou!
Considerando o conteúdo ministrado na aula 6 / Slides 4, 5 e 6, Estão corretas as questões II e
III
Questão 2/12 - Estrutura de Dados
Para conectarmos um determinado registro entre dois outros registros de uma Lista (incluir no meio), se não
seguirmos uma ordem correta de procedimentos, podemos perder o encadeamento de nossa Lista.
Para incluir fazemos primeiramente uma pesquisa para saber onde incluir.
Se após a rotina de pesquisa para incluir, ficou definido que a variável ponteiro \aux\ contem o endereço do
registro que vai anteceder o registro que vai entrar, e a variável \ptr\ contem o endereço do registro a ser
incluído.
Considerando o conteúdo ministrado na aula 6, qual rotina em programação devemos utiliza? Assinale a
alternativa CORRETA.
Nota: 10.0
A
aux->ante = ptr;
aux->prox = ptr->prox;
aux->prox->ante = aux;
aux->ante->prox = aux;
B
ptr->ante = aux;
ptr->prox = aux->prox;
ptr->prox->ante = ptr;
ptr->ante->prox = ptr;
Você acertou!
16/06/2018 AVA UNIVIRTUS
3/10
Considerando o conteúdo ministrado na aula 6 / Slides 15 e 20, esta é a alternativa CORRETA.
C
ptr->prox = aux;
ptr->ante = aux->ante;
ptr->prox->ante = ptr;
ptr->ante->prox = ptr;
D
ptr->ante = aux;
ptr->prox = aux->prox;
aux->prox->prox = ptr;
aux->ante->ante = ptr;
E
ptr->ante = aux;
ptr->prox = aux;
ptr->prox->ante = ptr;
ptr->ante->prox = ptr;
Questão 3/12 - Estrutura de Dados
Para armazenar dados em uma Pilha, os seguintes passos devem ser realizados na respectiva ordem
Considerando o conteúdo ministrado na aula 5, assinale a alternativa CORRETA
Nota: 10.0
A
1. Armazenar os dados no espaço alocado
2. Alocar espaço de memória
3. Conectar o registro alocado na Pilha
4. Atualizar variáveis de controle
B
1. Alocar espaço de memória
2. Armazenar os dados no espaço alocado
3. Conectar o registro alocado na Pilha
4. Atualizar variáveis de controle
Você acertou!
Aula 05 / Slide 17
C
1. Alocar espaço de memória
2. Armazenar os dados no espaço alocado
3. Atualizar variáveis de controle
4. Conectar o registro alocado na Pilha
D
1. Atualizar variáveis de controle
2. Alocar espaço de memória
3. Armazenar os dados no espaço alocado
4. Conectar o registro alocado na Pilha
16/06/2018 AVA UNIVIRTUS4/10
E
1. Conectar o registro alocado na Pilha
2. Alocar espaço de memória
3. Armazenar os dados no espaço alocado
4. Atualizar variáveis de controle
Questão 4/12 - Estrutura de Dados
Antes de executar um determinado programa, o compilador faz uma análise linha a linha procurando
inconsistências.
Caso encontre o compilador para e acusa erro de programação.
Em qual das afirmações a baixo o compilador não vai acusar erro com relação a funções?
Assinale a Alternativa CORRETA
Nota: 10.0
A Quando declaramos que a função vai receber 3 (três) valores como argumento e somente enviamos 2(dois).
B
Quando o compilador \ufffdver encontrado uma chamada à execução de uma determinada função, sendo que esta função somente vai ser declarada no \ufb01nal do programa, fora do bloco principal main(), e não existe o cabeçalho da função no topo do programa antes da chamada.
C Quando fazemos a chamada a uma determinada função internamente a outra função, mas a função que estamos chamando está sendo declarada dentro do bloco principal main().
D Quando realizamos a chamada à execução de uma função fora do bloco principal main() e fora de qualquer outra função.
E
Quando o compilador tiver encontrado uma chamada à execução de uma determinada função, sendo que esta função somente vai ser declarada no final do programa, fora do bloco principal main(), e existe o cabeçalho da função no topo do programa antes da chamada.
Você acertou!
Aula 03 / Slides 5, 6 e 7
Questão 5/12 - Estrutura de Dados
Sobre alocação dinâmica de memória, é correto afirmar:
Considerando o conteúdo ministrado na aula 5, assinale a alternativa CORRETA
Nota: 10.0
A Quando alocamos um determinado espaço de memória, podemos armazenar qualquer tipo de variável neste espaço alocado.
B Variáveis do tipo inteiro podem armazenar tanto número inteiro quando endereções de memória inteiras.
C Quando alocamos espaço de memória, não precisamos definir o tamanho a ser alocado, pois precisamos somente do endereço de memória alocado
D
A principal vantagem de trabalharmos com alocação dinâmica de memória é que não precisamos definir a quantidade de espaço a ser alocado em linha de código.
O espaço de memória é alocado de acordo com a necessidade em tempo de execução do programa
Você acertou!
Aula 05 / slides 4
E A principal vantagem de trabalharmos com vetor em relação a alocação dinâmica de memória, é que no vetor não precisamos definir a quantidade de espaço a ser reservado de memória para armazenar
16/06/2018 AVA UNIVIRTUS
5/10
variáveis. O espaço de memória é reservado de acordo com a necessidade em tempo de execução do
programa
Questão 6/12 - Estrutura de Dados
Qual a principal diferença entre as metodologias Pilha, Fila e Lista?
Considerando o conteúdo ministrado na aula 6, assinale a alternativa CORRETA.
Nota: 10.0
A
Em Pilhas somente podemos incluir e excluir do topo da Pilha. Em Fila temos que incluir em uma extremidade e retirar em outra extremidade da Fila. Em Listas podemos incluir e excluir nas extremidades e no meio da Lista
Você acertou!
Considerando o conteúdo ministrado na aula 6 / Slides 4, 6 e 25, esta é a alternativa CORRETA.
B Segundo as regras, em Pilhas e Filas podemos realizar pesquisas, enquanto em Listas não podemos realizar pesquisas se os dados não tiverem ordenados.
C Não há diferença entre as metodologias, aplicamos as mesmas regras para qualquer estrutura. O conceito é apenas literário.
D O tipo de registro é diferente para as três metodologias de trabalho.
E Está no tipo de alocações realizada.
Questão 1/10 - Estrutura de Dados
Com relação as informações sobre Fila a seguir, responda
I \ Quando declaramos um registro que será utilizado para a criação de Filas, temos que criar um campo ponteiro do mesmo tipo do registro para conter o endereço de memória do próximo registro a entrar na Fila. Deste modo, quando tiramos um registro da Fila, sabemos onde está o anterior a este que saiu.
II Quando declaramos um registro que será utilizado para a criação de Filas, temos que criar um campo ponteiro do mesmo tipo do registro para conter o endereço de memória do registro que entrou antes dele na Fila. Deste modo, quando tiramos um registro da Fila, sabemos onde está o anterior a este que saiu. 
III - Quando declaramos um registro que será utilizado para a criação de Filas, temos que criar um campo ponteiro do mesmo tipo do registro para conter o endereço de memória deste mesmo registro. Deste modo é que o programa sabe onde está cada registro da Fila na memória.
Considerando o conteúdo ministrado na aula 5, assinale a alternativa CORRETA
A Somente a afirmação I está correta
Aula 05 / Slide 17, 18 e 19
B Somente a afirmação II está correta
C Somente a afirmação III está correta
D Somente as afirmações I e III estão corretas.
E Nenhuma afirmação está correta.
Questão 2/10 - Estrutura de Dados
Sobre alocação dinâmica de memória, é correto afirmar: Considerando o conteúdo ministrado na aula 5, assinale a alternativa CORRETA
A Quando alocamos um determinado espaço de memória, podemos armazenar qualquer tipo de variável neste espaço alocado.
B Variáveis do tipo inteiro podem armazenar tanto número inteiro quando endereções de memória inteiras.
C Quando alocamos espaço de memória, não precisamos definir o tamanho a ser alocado, pois precisamos somente do endereço de memória
alocado
D A principal vantagem de trabalharmos com alocação dinâmica de memória é que não precisamos definir a quantidade de espaço a ser
alocado em linha de código. O espaço de memória é alocado de acordo com a necessidade em tempo de execução do programa
Você acertou!
Aula 05 / slides 4
E A principal vantagem de trabalharmos com vetor em relação a alocação dinâmica de memória, é que no vetor não precisamos definir a
quantidade de espaço a ser reservado de memória para armazenar variáveis. O espaço de memória é reservado de acordo com a
necessidade em tempo de execução do programa
Questão 3/10 - Estrutura de Dados
A função a seguir lista na tela todos os registros de uma determinada Lista Encadeada e não-Circular.
Se esta Lista fosse Circular, quis alterações deveriam ser realizadas para não corrermos o risco de ficarmos em loop?
listar()
{ ptr = prim;
while( ptr != NULL)
{ printf(\u201cNome: %s \n\u201d, ptr->nome);
ptr = ptr->prox;
}
}
Considerando o conteúdo ministrado na aula 6, assinale a alternativa CORRETA.
A aux = ptr = prim;
while( ptr != aux)
{ printf(\u201cNome: %s \n\u201d, ptr->nome);
ptr = ptr->prox;
}
B aux = ptr = prim;
do
{ printf(\u201cNome: %s \n\u201d, ptr->nome);
ptr = ptr->prox;
} while( ptr != NULL);
C aux = ptr = prim;
do
{ printf(\u201cNome: %s \n\u201d, ptr->nome);
ptr = ptr->prox;
} while( ptr != aux);
Você acertou!
Considerando o conteúdo ministrado na aula 6, esta é a alternativa CORRETA.
D aux = ptr = prim;
do
{ printf(\u201cNome: %s \n\u201d, ptr->nome);
ptr = ptr->prox;
} while( ptr != prim);
E aux = ptr = prim;
while( aux != NULL)
{ printf(\u201cNome: %s \n\u201d, ptr->nome);
ptr = ptr->prox;
}
Questão 4/10 - Estrutura de Dados
Quantos são e quais são os tipos de Listas que podemos ter: Considerando o conteúdo ministrado na aula 6, assinale a alternativa CORRETA
A 2 - Encadeada e Duplamente Encadeada
B 4 - Encadeada, Duplamente Encadeada, Encadeada Circular e Duplamente Encadeada Circular
Você acertou!
Aula 06 / slides 6 a 9
C 2 - Encadeada e Circular
D 3 - Encadeada, Duplamente Encadeada e Encadeada Circular
E 2 - Duplamente Encadeada e Duplamente Encadeada Circular
Questão 5/10 - Estrutura de Dados
Sobre a rotina do Programa a seguir:
struct Dados {
char nome[30];
struct Dados *ante, *prox;
} *prim, *ulti, *ptr;
teste()
{ while( prim != NULL)
{ ptr = prim;
prim = prim->prox;
free(ptr);
}
ulti = NULL;
}
Considerando o conteúdo ministrado na aula 6, assinale a alternativa INCORRETA (ERRADA).
A Tomando como base que esta função esvazia a Lista completamente, a linha de comando \u201culti = NULL\u201d (que contém o endereço do último registro da Lista) é desnecessária se na inclusão do primeiro registro na Lista forverificado somente a variável que indica o endereço do primeiro elemento da Lista \prim\.
B O objetivo principal desta função é retirar todos os elementos da Lista e liberar o espaço de memória por eles ocupados.
C A linha de comando \cptr = prim;\ é desnecessária, pois podemos liberar espação de memória diretamente com a variável \cprim\. Ficando deste modo o comando: \cfree(prim->prox);
Você acertou!
Considerando o conteúdo ministrado na aula 6 / Slides 19 e 20, a alternativa é INCORRETA (errada).
D Esta função para esvaziar a Lista, não funciona em Listas Circulares, por que o campo \cprox\ em Listas Circulares nunca será \NULL\.
E Independente se a Lista for Simplesmente Encadeada ou Duplamente Encadeada, esta função pode ser utilizada para esvaziar a Lista completamente.
Questão 6/10 - Estrutura de Dados
Sobre registros utilizados em Listas Duplamente Encadeadas, Considerando o conteúdo ministrado na aula 6, assinale a alternativa INCORRETA (ERRADA).
A Os registros possuem duas variáveis ponteiros do mesmo tipo do registro, para armazenar o endereço do registro anterior e do próximo da Lista.
B Se a Lista for Circular, o último registro da Lista, em seu campo próximo, haverá o endereço do primeiro da Lista.
C Se a Lista for Circular, o primeiro registro da Lista, em seu campo anterior, haverá o endereço do último da Lista.
D O campo responsável por armazenar o endereço do próximo registro do último da Lista, é armazenado com o conteúdo NULL. Indicando que não há registros após este.
E Os registros possuem duas variáveis ponteiros do mesmo tipo do registro, para armazenar o endereço do próprio registro e do próximo da Lista.
Você acertou!
Considerando o conteúdo ministrado na aula 6 / Slide 20, a alternativa está INCORRETA (ERRADA)
Questão 7/10 - Estrutura de Dados
Sobre incluir elementos em uma Lista:
I \ Para incluir registros em uma Lista, estes podem ser incluídos no início, no final ou no meio da Lista. Para o caso de incluir no final e no início, temos que tomar o cuidado de após conectar o registro da Lista, atualizar as respectivas variáveis de controle.
II \Os passos corretos e em ordem, para incluir registros em uma Lista são: 1º Alocar espaço de memória; 2º Armazenar os dados; 3º Conectar (ligar) o registro na Lista; 4º Atualizar as variáveis de controle.
III Se a Lista não for ordenada, com relação a programação, é mais fácil incluir no início ou no final da Lista.
Considerando o conteúdo ministrado na aula 6, assinale a alternativa com a sequência CORRETA.
A Somente as questões I e II estão corretas;
B Somente as questões I e III estão corretas.
C Somente as questões II e III estão corretas.
D As questões I, II e III estão corretas.
Você acertou!
Considerando o conteúdo ministrado na aula 6 / Slides 15 e 20, a alternativa está com a sequência CORRETA.

Outros materiais