Buscar

ESTRUTURAS 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 5 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

Prévia do material em texto

Abaixo estão as questões e as alternativas que você selecionou: 
 
 
QUESTÃO 1 
Sobre os conceitos de tamanho e capacidade de uma lista, assinale a 
alternativa correta. 
 
a) Em uma lista dinâmica, o tamanho é irrelevante, já que ela nunca estará cheia. 
b) A variável tamanho da lista indica o índice do último elemento. 
c) O tamanho da lista é indicado pelo tamanho do vetor de dados (dados.length). 
d) Os índices válidos de uma lista variam de 0 até a capacidade da lista subtraída de um. 
 e) A capacidade refere-se à quantidade máxima de elementos que podem ser inseridos 
na lista. 
 
Justificativa 
O tamanho refere-se à quantidade de elementos disponíveis na lista. Já a capacidade é a 
quantidade máxima de elementos que podem ser inseridos na lista. Os índices válidos em 
uma lista estão no intervalo de 0 até o tamanho da lista subtraído de um. As listas 
dinâmicas têm a capacidade limitada apenas pela memória e, por isso, seu tamanho é um 
atributo relevante. 
 
QUESTÃO 2 
Sobre as classificações das estruturas com relação a seus limites de 
dados e sua disposição dos elementos na memória, é correto afirmar 
que: 
 
a) uma estrutura estática de grande capacidade com poucos elementos consumirá menos 
memória do que uma dinâmica. 
b) estruturas estáticas possuem uma quantidade fixa de dados que conseguem suportar, 
geralmente definida durante sua criação. 
c) o custo de limpeza em uma pilha estática é maior do que o custo em uma pilha 
dinâmica. 
d) estruturas dinâmicas não disparam o erro de underflow, uma vez que não possuem 
limite de elementos na memória. 
e) uma estrutura sequencial cheia terá um overhead maior do que uma estrutura 
encadeada cheia. 
 
Justificativa 
Quanto ao limite de dados, as estruturas podem ser classificadas de duas formas: 1) 
estáticas: possuem uma quantidade fixa de dados que conseguem suportar, geralmente 
definida em sua criação; 2) dinâmicas: possuem tamanho variável, com a quantidade de 
elementos geralmente limitado pela memória. Esta última não dispara o erro de overflow, 
visto que nunca ficará cheia. 
Já quanto à disposição dos dados, podem ser classificadas como: 1) sequenciais: os 
elementos estão lado a lado; 2) encadeadas: os elementos ficam dispersos na memória. 
As estruturas estáticas precisam alocar memória no momento de sua criação. Assim, seu 
custo em memória sempre será total, mesmo que nenhum elemento seja inserido. Por 
outro lado, alocações e desalocações em pilhas e filas estáticas têm custo próximo a 0. 
Quando se encontra cheia, seu overhead é muito pequeno (4 bytes). Já as estruturas 
dinâmicas alocam memória à medida que são usadas, mas precisam de 4 bytes em cada 
nó. Isso também tem a consequência de espalhar os elementos pela memória, além dos 
custos maiores de alocação/desalocação. 
 
QUESTÃO 3 
Sobre a implementação da função hashCode, assinale a alternativa 
correta. 
 
a) A variável result deve ser inicializada por um número primo qualquer. 
b) Combina valores entre campos utilizando-se de um número primo constante. 
c) Não pode ser utilizado em tabelas hash, já que o seu resultado pode ser qualquer 
número inteiro. 
d) Nunca retorna números negativos, já que não há qualquer condição que os utilize. 
e) Deve utilizar todos os campos presentes no método equals. 
 
Justificativa 
A função hashCode, proposta por Bloch (2019), trabalha da seguinte forma: 
1.Inicializa-se a variável result com um número qualquer, que não precisa ser primo. 
2.Utilizam-se operações sobre os campos da classe, de acordo com o tipo de dado, 
gerando o valor calculado c. 
3.Combina-se o valor c dentro da variável result, utilizando um número primo constante p 
como base, por meio da fórmula: result = p * result + c. 
A função pode utilizar menos campos do que os presentes no método equals, ao 
descartar campos redundantes, mas não mais. Como o resultado é um número inteiro 
qualquer, positivo ou negativo, ele poderá ser utilizado em tabelas hash, bastando, para 
isso, a utilização de uma função de redução. 
 
QUESTÃO 4 
Considerando a estrutura de dados pilha, qual é o que será impresso 
pelo código a seguir? 
 
 
a) A B E 
b) A B C 
c) O código lança uma exceção devido ao overflow. 
d) O código lança uma exceção devido ao underflow. 
e) C B E 
 
Justificativa 
A pilha remove os elementos na ordem inversa da qual foram inseridos. Inicialmente, 
foram inseridos os elementos A, B e C. Como são feitas duas remoções, o código inicia 
imprimindo C B. Sobra na pilha ainda o valor A. Em seguida, são inseridos os 
valores D e E. Em uma nova remoção, o valor E é removido e impresso. A impressão final, 
portanto, é C B E. Como a pilha nunca ficou vazia ou ultrapassou a quantidade de três 
elementos em seu interior, nenhuma exceção é disparada. 
 
QUESTÃO 5 
Selecione a alternativa que contém apenas características de 
dispositivos de memória não volátil. 
 
a) Alto custo, acesso lento e tamanho pequeno. 
b) Baixo custo, acesso lento e memória em abundância. 
c) Apaga-se ao desligar, baixo custo e alta disponibilidade. 
d) Alto custo, acesso rápido e tamanho pequeno. 
e) Próximo ao processador, acesso rápido e tamanho pequeno. 
 
Justificativa 
Os dispositivos não voláteis, também chamados de dispositivo de armazenamento, 
fornecem memória em abundância a um custo relativamente baixo, se comparado ao 
custo da memória volátil. Porém, comparado às alternativas voláteis, seu acesso também 
é lento e, por isso, são usados como memória secundária. São exemplos: HDs, disquetes, 
DVDs e pendrives. 
 
QUESTÃO 6 
Sobre as características do garbage collector (GC), assinale a alternativa 
correta. 
 
a) O GC congela a aplicação por uma quantidade previsível de tempo, o que o torna 
recomendado para aplicações de tempo real. 
b) Uma das desvantagens do GC é utilizar um único núcleo de processamento, o que 
pode congelar a execução da aplicação. 
c) O GC é recomendado em aplicações de tempo real, pois é capaz de agrupar a memória 
não utilizada em blocos grandes antes de desalocá-la. 
d) Quando uma área de memória fica sem referência, ela é desalocada imediatamente 
pelo GC. 
e) O GC é capaz de reaproveitar uma área de memória recém-desalocada, evitando o 
custo de desalocação e realocação. 
 
Justificativa 
O garbage collector é capaz de desalocar memória automaticamente, assim que fica sem 
referências. Além disso, ele agrupa a memória em blocos grandes, utiliza vários núcleos 
de processamento e é capaz de reutilizar memória recém alocada, poupando os tempos 
de alocação e desalocação nessa ocasião. 
Sua desvantagem, porém, é sua imprevisibilidade, o que o torna inadequado para 
aplicações de tempo real. É impossível saber o momento exato que o GC irá rodar e 
desalocar a memória ou quanto tempo esse processo levar. 
 
 
 
 
 
 
 
 
 
QUESTÃO 7 
Quanto às operações na estrutura de dados pilha, assinale a alternativa 
correta. 
 
a) A remoção na pilha retira todos os elementos da pilha e segue a ordem na qual os 
elementos foram inseridos. 
b) A limpeza da pilha estática é feita alterando o valor do topo para -1 e removendo as 
referências dentro do vetor dados. 
c) A operação de iteração permite remover todos os elementos da pilha de uma só vez. 
d) A inserção na pilha encadeada tem custo próximo de zero, pois a estrutura do nó é 
muito pequena. 
e) Para verificar se uma pilha encadeada está cheia, basta testar se o topo é do tamanho 
do vetor de dados. 
 
Justificativa 
As operações possíveis para as todas as pilhas são: 
Adicionar: insere o elemento no topo da pilha. Terá custo próximo de zero na pilha 
estática, uma vez que não há novas alocações de memória. Porém, na encadeada, o 
custo será maior, já que essa pilha faz uma nova alocação a cada novo elemento. 
Remover: remove o elemento do topo da pilha, ou seja, na ordem inversa da qual foi 
inserido. 
Limpeza: elimina todos os elementos da pilha. No caso da pilha estática, basta definirmos 
o valor do topo para -1. Na pilha encadeada, toda memória serádesalocada ao se definir o 
topo para nulo. 
Verificar se está cheia: permite que testemos se a pilha atingiu sua capacidade máxima. 
No caso da pilha estática, basta verificar se o topo atingiu a capacidade de dados. A pilha 
dinâmica (encadeada) nunca estará cheia, pois seu limite é definido apenas pela memória 
do processo. 
Verificar se está vazia: permite que testemos se a pilha não contém elementos. 
Iteração: permite consultar os elementos da pilha em ordem sequencial, sem removê-los. 
 
QUESTÃO 8 
Qual das estruturas a seguir pode ser utilizada para implementar uma 
tabela de espalhamento (hash)? 
 
a) Fila encadeada de listas. 
b) Fila de vetores. 
c) Conjunto hash. 
d) Vetor de pilhas encadeadas. 
e) Vetor de listas encadeadas. 
 
Justificativa 
Uma tabela hash necessita de duas estruturas: 
1. A primeira, sequencial e acessível por índices, para que possa ser diretamente 
acessada depois que o código hash é encontrado. Nesse caso, estruturas possíveis 
seriam o vetor e as listas sequenciais. Em uma abordagem de endereçamento aberto, 
somente essa estrutura é necessária. 
2. A segunda, que permita o acesso aos elementos, e exclusão de um elemento em 
qualquer posição. Como qualquer tipo de lista, como a lista encadeada. 
O conjunto e o mapa hash são estruturas de dados que podem ser implementadas por 
meio da tabela hash.

Continue navegando