Logo Passei Direto
Buscar

Avaliação I - Estruturas de Dados

Ferramentas de estudo

Questões resolvidas

Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Questões resolvidas

Prévia do material em texto

GABARITO | Avaliação I - Individual (Cod.:955135)
Peso da Avaliação
2,00
Prova
83625097
Qtd. de Questões
10
Acertos/Erros
9/1
Nota
9,00
Pode-se imaginar uma pilha ou fila nas quais seus elementos contivessem, além do dado armazenado, o endereço de referência para o 
próximo elemento. Para a estrutura de dados que se organiza dessa maneira, dá-se o nome de lista encadeada.
Fonte: adaptado de: DROZDEK, A. Estrutura de dados e algoritmos em C++. 2. ed. São Paulo: Cengage Learning, 2016.
Sobre a implementação de listas, avalie as asserções a seguir e a relação proposta entre elas:
I. A utilização de estruturas de dados que podem utilizar alocação dinâmica de memória, como as listas duplamente encadeadas, mostra-se 
vantajosa, principalmente por evitar desperdício de memória.
 
PORQUE
 
II. A memória física de um computador é como um grande vetor estático, que pode ser vasculhado à procura de posições livres para se realizar 
alocação de memória em tempo de compilação.
A respeito dessas asserções, assinale a opção correta:
A As asserções I e II são verdadeiras, mas a II não é uma justificativa correta da I.
B A asserção I é uma proposição falsa e a II é uma proposição verdadeira.
C As asserções I e II são falsas.
D As asserções I e II são verdadeiras, e a II é uma justificativa correta da I.
E A asserção I é uma proposição verdadeira e a II é uma proposição falsa.
Analise o trecho de código apresentado:
01 - struct no {
02 - int dado;
03 - struct no *proximo;
04 - };
05 -
06 - typedef no *ptr_no;
07 -
08 - ptr_no lista;
09 -
10 - void lista_operacao(ptr_no lista, int valor){
11 - while(lista->proximo != NULL){
12 - lista = lista->proximo;
13 - }
14 - lista->proximo = (ptr_no) malloc(sizeof(no));
15 - lista = lista->proximo;
 VOLTAR
A+ Alterar modo de visualização
1
2
Jader Willian Silva dos Santos
Análise e Desenvolvimento de Sistemas (5558144)

08/07/24, 13:26 AVA
https://ava2.uniasselvi.com.br/subject/grades-and-tests/answer-book/eyJ0ZXN0Ijp7InRlc3RDb2RlIjoiOTU1MTM1IiwiZGVzY3JpcHRpb24iOiJBdmFsaWHDp8OjbyBJIC0gSW5kaXZpZHVhbCIsInBhcmFtZXRlciI6MTgz… 1/6
16 - lista->dado = valor;
17 - lista->proximo = NULL;
18 - }
Assinale a alternativa correta com relação ao objetivo da função lista_operacao():
A Remover o primeiro nó da lista.
B Remover o último nó da lista.
C Inserir um nó no início da lista.
D Inserir dois nós no inicio da lista.
E Inserir um nó no final da lista.
A Pilha é uma das estruturas mais simples e mais versáteis dentre as utilizadas na computação. Pode-se imaginar uma pilha de tijolos, uma 
pilha de roupas, de pratos. Todavia, suas aplicações computacionais variam desde as chamadas recursivas até a manipulação de dados em 
memória principal.
Considere o código a seguir, cujo propósito seria o de remover um elemento na posição que demarca o topo da pilha:
 
01 - void pilha_remover(struct str_no pilha){
02 - struct str_no atual;
03 - atual = (struct str_no*) malloc(sizeof(struct str_no));
04 - while(pilha->proximo != NULL){
05 - atual = pilha;
06 - pilha = pilha->proximo;
07 - }
08 - atual->proximo = NULL;
09 - }
Com base no código-fonte apresentado, analise as afirmativas a seguir:
I. Os comandos compreendidos entre as linhas 4, 5, 6 e 7 são para percorrer a lista do início ao fim.
II. A função tenta realizar a remoção de um elemento sem a preocupação de liberar memória.
III. O funcionamento desse algoritmo permaneceria inalterado caso o comando da linha 3 fosse removido.
É correto o que se afirma em:
A II, apenas.
B II e III, apenas.
C I, II e III.
D I e III, apenas.
E III, apenas.
3
Jader Willian Silva dos Santos
Análise e Desenvolvimento de Sistemas (5558144)

08/07/24, 13:26 AVA
https://ava2.uniasselvi.com.br/subject/grades-and-tests/answer-book/eyJ0ZXN0Ijp7InRlc3RDb2RlIjoiOTU1MTM1IiwiZGVzY3JpcHRpb24iOiJBdmFsaWHDp8OjbyBJIC0gSW5kaXZpZHVhbCIsInBhcmFtZXRlciI6MTgz… 2/6
Um programador criou uma lista dinâmica com base na estrutura apresentada a seguir:
 
struct no {
 int dado;
 struct no *proximo;
};
 
struct lista{
 struct no *inicio;
}
 
struct lista l;
O programador criou um programa para percorrer toda a lista, fazendo com que um ponteiro ptr, iterador, seja inicializado em l->inicio e 
incrementado até atingir o final da respectiva lista. No critério de parada da estrutura de repetição utilizada para percorrer a lista, o 
programador deve esperar que ptr->proximo seja igual a que valor ou identificar o final da lista como?
A '\0'.
B l->final.
C Nulo.
D NULL.
E END.
Tanto a fila como a pilha são conjuntos ordenados de itens, porém ambas se diferenciam pelas regras de entrada e saída. Na pilha, a entrada e 
a saída de dados se dão pela mesma extremidade, chamada de topo da pilha. Na fila, a entrada e a saída ocorrem em lugares opostos: a 
entrada acontece no final da fila e a saída no seu início. No caso de uma variável simples, a princípio, armazena-se apenas uma informação de 
um determinado tipo. Para armazenar mais de um elemento em uma variável, podemos usar estruturas homogêneas ou heterogêneas.
Fonte: adaptado de: DROZDEK, A. Estrutura de dados e algoritmos em C++. 2. ed. São Paulo: Cengage Learning, 2016.
A respeito das estruturas de dados mencionadas, assinale a alternativa correta:
A A função de desempilhar retira da pilha sempre o primeiro elemento, a não ser que um índice seja indicado por parâmetro.
B A função de desempilhar retira da pilha sempre o último elemento, a não ser que um índice seja indicado por parâmetro.
C
As filas e pilhas podem armazenar elementos de um mesmo tipo, mudando apenas as funções de inclusão e remoção das filas para as
pilhas.
D
As pilhas são estruturas homogêneas, de acesso direto, onde podemos armazenar apenas elementos de tipos diferentes, sem uma
ordem predeterminada.
E
Os registros são estruturas de dados para armazenamento heterogêneo, que possuem os dados a serem armazenados e um ponteiro
para o próximo elemento.
Considere o seguinte cenário:
4
5
6
Jader Willian Silva dos Santos
Análise e Desenvolvimento de Sistemas (5558144)

08/07/24, 13:26 AVA
https://ava2.uniasselvi.com.br/subject/grades-and-tests/answer-book/eyJ0ZXN0Ijp7InRlc3RDb2RlIjoiOTU1MTM1IiwiZGVzY3JpcHRpb24iOiJBdmFsaWHDp8OjbyBJIC0gSW5kaXZpZHVhbCIsInBhcmFtZXRlciI6MTgz… 3/6
Você está visitando um médico para um check-up. Há muitas pessoas na clínica. Uma senhora está digitando os nomes de todas as pessoas 
em um arquivo. A pessoa que chegar mais cedo será atendida primeiro. Quando o médico está livre, ele chama o próximo paciente na 
sequência de chegada.
Sobre o exposto, avalie as asserções a seguir e a relação proposta entre elas:
I. O cenário representa a estrutura Fila porque segue o método primeiro que entra é o primeiro que sai.
PORQUE
II. Em uma fila, adicionamos elementos na parte de trás e os removemos na frente.
A respeito dessas asserções, assinale a opção correta:
A As asserções I e II são verdadeiras, mas a II não é uma justificativa correta da I.
B A asserção I é uma proposição falsa e a II é uma proposição verdadeira.
C As asserções I e II são verdadeiras, e a II é uma justificativa correta da I.
D A asserção I é uma proposição verdadeira e a II é uma proposição falsa.
E As asserções I e II são falsas.
Ao trabalhar com ponteiros, o desenvolvedor tem a possibilidade de realizar acessos a endereços de memória arbitrários. Além disso, ela 
permite, ainda, que você monitore endereços na memória, atribua e recupere valores de variáveis sem ao menos invocá-las diretamente.
 
Dessa forma, analise o trecho de código a seguir:
int xi;
int xy;
int *ptr_xi;
xi = 5;
xy = xi;
ptr_xi = & xi;
xi = 12;
Assinale a alternativa correta que apresenta o valor de cada uma das variáveis após a execução do código:
A xi é 12; xy é 12; ptr_xi é 12; *ptr_xi é um valor que representao endereço de memória.
B xi é 12; xy é 12; *ptr_xi é 12; ptr_xi é um valor que representa o endereço de memória.
C xi é 12; xy é 5; ptr_xi é 5; *ptr_xi é um valor que representa o endereço de memória.
D xi é 12; xy é 5; *ptr_xi é 12; ptr_xi é um valor que representa o endereço de memória.
E xi é 5; xy é 12; *ptr_xi é 12; ptr_xi é um valor que representa o endereço de memória.
Os ponteiros estão entre as estruturas de dados mais importantes das linguagens de programação, pois graças a eles é possível fazer 
alocação dinâmica de memória e utilizar estruturas de dados mais complexas.
Fonte: adaptado de: DROZDEK, A. Estrutura de dados e algoritmos em C++. 2. ed. São Paulo: Cengage Learning, 2016.
7
8
Jader Willian Silva dos Santos
Análise e Desenvolvimento de Sistemas (5558144)

08/07/24, 13:26 AVA
https://ava2.uniasselvi.com.br/subject/grades-and-tests/answer-book/eyJ0ZXN0Ijp7InRlc3RDb2RlIjoiOTU1MTM1IiwiZGVzY3JpcHRpb24iOiJBdmFsaWHDp8OjbyBJIC0gSW5kaXZpZHVhbCIsInBhcmFtZXRlciI6MTgz… 4/6
Sobre ponteiros, assinale a alternativa correta:
A Armazena o endereço de uma posição de memória.
B Armazena o valor de uma variável e sua posição no vetor.
C Não pode ser utilizado como parâmetro de uma função.
D Permite apenas alocação dinâmica de memória.
E É o recurso mais utilizado por programadores iniciantes.
Após estudar ponteiros, é possível criarmos estruturas que aumentam ou diminuem conforme a necessidade. Esse é o caso de listas 
encadeadas, que podem ser tratadas em diversas formas, por exemplo como pilha, fila, duplamente encadeada, circulares e assim por diante. 
Com base em seus estudos, observe o trecho de código a seguir:
01 - void nomeDaFuncao(struct ptr_no *lista, int dado){
02 - struct ptr_no *atual;
03 - atual = (struct ptr_no*) malloc(sizeof(struct ptr_no));
04 - while((lista->dado != dado)){
05 - if(lista->proximo == NULL){
06 - break;
07 - }
08 - atual = lista;
09 - lista = lista->proximo;
10 - }
11 - if(lista->dado == dado){
12 - atual->proximo = lista->proximo;
13 - }
14 - }
Considere que, durante a invocação da referida função, o parâmetro lista recebe um ponteiro que aponta para o primeiro elemento da 
estrutura de dados. Ainda, leve em consideração que a struct ptr_no possui dois campos, a saber: dado, do tipo inteiro; e proximo, um 
ponteiro do tipo struct ptr_no. Assinale a alternativa correta que descreve a funcionalidade executada pela função apresentada:
A Remove um item da pilha.
B Insere um item da fila.
C Insere um item na lista encadeada.
D Remove um item da lista encadeada.
E Remove um item da fila.
Lista ligada, ou lista encadeada, é uma estrutura de dados linear e dinâmica. Ela é composta por uma sequência de nós que contém seus 
dados e também uma ou duas referências, ponteiros, que apontam para o nó anterior ou posterior. Há diversos modelos de lista ligadas como 
lista encadeada, listas duplamente encadeada e listas encadeadas circulares.
Com base no texto exposto, analise as afirmativas a seguir:
I. O processo de remoção de uma lista encadeada é simples, basta acessar a posição do vetor e inserir um valor vazio.
II. A lista duplamente encadeada é uma estrutura de dados na qual cada nó possui pelo menos três campos: um de dados e dois de endereço, 
sendo um dos endereços usado para apontar ao nó anterior e o outro aponta para o nó posterior (próximo nó).
9
10
Jader Willian Silva dos Santos
Análise e Desenvolvimento de Sistemas (5558144)

08/07/24, 13:26 AVA
https://ava2.uniasselvi.com.br/subject/grades-and-tests/answer-book/eyJ0ZXN0Ijp7InRlc3RDb2RlIjoiOTU1MTM1IiwiZGVzY3JpcHRpb24iOiJBdmFsaWHDp8OjbyBJIC0gSW5kaXZpZHVhbCIsInBhcmFtZXRlciI6MTgz… 5/6
III. O vetor estático, caso seja necessário aumentar o seu tamanho, basta alocar (adicionar) espaço no vetor.
IV. Os itens na lista são chamados de nó e contêm pelo menos dois elementos: um de dados e um de endereço. O campo de endereço contém 
o conteúdo do elemento armazenado na lista, já o campo de dados é um ponteiro para o próximo nó.
É correto o que se afirma em:
A II, apenas.
B II, III e IV, apenas.
C I e III, apenas.
D II e IV, apenas.
E I, II e III, apenas.
Revisar Conteúdo do Livro
Imprimir
Jader Willian Silva dos Santos
Análise e Desenvolvimento de Sistemas (5558144)

08/07/24, 13:26 AVA
https://ava2.uniasselvi.com.br/subject/grades-and-tests/answer-book/eyJ0ZXN0Ijp7InRlc3RDb2RlIjoiOTU1MTM1IiwiZGVzY3JpcHRpb24iOiJBdmFsaWHDp8OjbyBJIC0gSW5kaXZpZHVhbCIsInBhcmFtZXRlciI6MTgz… 6/6

Mais conteúdos dessa disciplina