Prévia do material em texto
Prova Impressa
GABARITO | Avaliação I - Individual (Cod.:1597010)
Peso da Avaliação 1,50
Prova 120755561
Qtd. de Questões 10
Acertos/Erros 10/0
Nota 10,00
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ó).
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 I, II e III, apenas.
C II, III e IV, apenas.
D I e III, apenas.
E II e IV, apenas.
VOLTAR
A+Aumentar, FonteAlterar modo de visualização
1
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.
Sobre ponteiros, assinale a alternativa correta:
A Não pode ser utilizado como parâmetro de uma função.
B Armazena o endereço de uma posição de memória.
C Armazena o valor de uma variável e sua posição no vetor.
D Permite apenas alocação dinâmica de memória.
E É o recurso mais utilizado por programadores iniciantes.
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, e a II é uma justificativa correta da I.
B A asserção I é uma proposição falsa e a II é uma proposição verdadeira.
C A asserção I é uma proposição verdadeira e a II é uma proposição falsa.
2
3
D As asserções I e II são falsas.
E As asserções I e II são verdadeiras, mas a II não é uma justificativa correta da I.
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.
Fonte: adaptado de: DROZDEK, A. Estrutura de dados e algoritmos em C++. 2. ed. São Paulo: Cengage
Learning, 2016.
A respeito de tais estruturas de dados, assinale a alternativa correta:
A 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.
B As pilhas são estruturas homogêneas, de acesso direto, onde podemos armazenar elementos de tipos
diferentes, sem uma ordem especificada.
C As filas e pilhas podem armazenar dados do mesmo tipo, mudando apenas as regras para implementar suas
respectivas funções de inserção e remoção de elementos.
D A função de desempilhar retira da pilha sempre o primeiro elemento, a não ser que um índice seja indicado
por parâmetro.
E A função de desempilhar retira da pilha sempre o último elemento, a não ser que um índice seja indicado
por parâmetro.
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;
4
5
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 é 5; ptr_xi é 5; *ptr_xi é um valor que representa o 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 é 5; xy é 12; *ptr_xi é 12; 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 é 12; xy é 12; *ptr_xi é 12; ptr_xi é um valor que representa o endereço de memória.
Considere o seguinte cenário:
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 A asserção I é uma proposição verdadeira e a II é uma proposição falsa.
B As asserções I e II são falsas.
C As asserções I e II são verdadeiras, e a II é uma justificativa correta da I.
D As asserções I e II são verdadeiras, mas a II não é uma justificativa correta da I.
6
E A asserção I é uma proposição falsa e a II é uma proposição verdadeira.
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 As pilhas são estruturas homogêneas, de acesso direto, onde podemos armazenar apenas elementos de tipos
diferentes, sem uma ordem predeterminada.
B A função de desempilhar retira da pilha sempre o primeiro 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 A função de desempilhar retira da pilha sempre o último elemento, a não ser que um índice seja indicado
por parâmetro.
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.
Um programador criou uma listadinâ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?
7
8
A '\0'.
B NULL.
C END.
D l->final.
E Nulo.
A Pilha é uma das estruturas mais simples e mais versáteis dentre as utilizadas na computação. Antes de entrar
nas nuances técnicas sobre pilhas, vamos abstrair o seu conceito para uma situação real.
Fonte: adaptado de: DROZDEK, A. Estrutura de dados e algoritmos em C++. 2. ed. São Paulo: Cengage
Learning, 2016.
As funções de desempilhar e de empilhar são comumente chamadas de pop() e push(), respectivamente.
Considere a seguinte pilha de números inteiros:
PILHA:
INÍCIO -> 5, 2, 15, 3, 9, 8, 4, 12, 10, 7, 1, 11 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 Insere um item da fila.
B Remove um item da lista encadeada.
C Remove um item da pilha.
D Insere um item na lista encadeada.
E Remove um item da fila.
10
Imprimir