Buscar

ESTRUTURA DE DADOS exercícios aula 08 (3)

Prévia do material em texto

ESTRUTURA DE DADOS 
CCT0753_A8_201801076693_V5 
 
 
Lupa Calc. 
 
 
 
 
 
Vídeo 
 
PPT 
 
MP3 
 
 
Aluno: SÉRGIO RICARDO SIMÃO Matrícula: 201801076693 
Disciplina: CCT0753 - ESTRUTURA DE DADOS Período Acad.: 2018.3 EAD (GT) / EX 
 
 
Prezado (a) Aluno(a), 
 
Você fará agora seu TESTE DE CONHECIMENTO! Lembre-se que este exercício é opcional, mas não 
valerá ponto para sua avaliação. O mesmo será composto de questões de múltipla escolha. 
Após responde cada questão, você terá acesso ao gabarito comentado e/ou à explicação da mesma. 
Aproveite para se familiarizar com este modelo de questões que será usado na sua AV e AVS. 
 
 
 
 
 
1. 
 
 
Sobre listas encadeadas, é INCORRETO afirmar que: 
 
 
pilhas e filas são versões limitadas de listas encadeadas, pois as inserções e remoções não 
ocorrem em qualquer parte. 
 
são acessadas pelo primeiro nodo da lista; 
 
o final da lista faz uma referência para NULL; 
 
a memória é alocada dinamicamente; 
 
 
possuem tamanho fixo; 
 
 
 
Explicação: 
Uma lista encadeada não tem tamanho fixo, pois usa-se alocação e desalocação dinâmica de 
memória. As demais afirmativas estão corretas. 
 
 
 
 
 
 
2. 
 
q Considere 
 
int *p, *q, *r; 
int x = 10, y = 20; 
 
Após seguir cada instrução na ordem dada a 
seguir : 
 
p = &x; 
q = &y; 
*p = *p + *q; 
(*q)++; 
r = q; 
q = p; 
 
identifique a opção que fornece correta e 
respectivamente, os valores de *p, *q , *r 
 
, x e y : 
 
 
 
30 30 21 10 20 
 
30 21 21 10 20 
 
 
30 30 21 30 21 
 
30 20 20 10 20 
 
30 20 0 30 21 
 
 
 
Explicação: 
Fazendo passo a passo temos : 
int *p, *q, *r; 
int x = 10, y = 20; 
p = &x; //p aponta para x, que vale 10 
q = &y; // q aponta para y que recebeu 20 
*p = *p + *q; //a área apontada por p, que é x, vai receber 10 + 20, que dá 30. Logo, *p e x valem 30. 
(*q)++; //A área apontada por q é incrementada. Ou sejam, y ou *q recebem 21 
r = q; //r aponta para y 
q = p; // q aponta para onde p aponta, ou seja, q aponta para x 
Logo : 
*p , que é x, vale 30 
*q, que é igual a *p, que é x, vale 30 
*r é y, que vale 21 
x vale 30 
y vale 21 
Logo, a resposta certa é 30 30 21 30 21 
 
 
 
 
 
 
3. 
 
Seja uma lista encadeada cujos nodos são formados pelo 
seguinte tipo de dado: 
struct empregado{ 
 long int matricula; 
 float salario; 
 empregado *proximo; 
}; 
 
 
Suponha que o ponteiro pont tenha o endereço de um 
nodo da lista, o qual se deseja atribuir um novo valor 
para o campo salario. Marque a alternativa que 
corretamente altera o valor do campo salario para 
5000.00. 
 
 
 
pont.empregado->salario=5000.00; 
 
pont.empregado.salario=5000.00 
 
pont.salario=5000.00; 
 
pont->empregado->salario=5000.00; 
 
 
salario=5000.00; 
 
 
 
Explicação: 
Criar a entrada: 
salario=5000.00; 
 
 
 
 
 
 
4. 
 
 
O espaço necessário para a representação dos dados pode ser 
alocado à medida que se torne necessário, através da alocação 
dinâmica. Uma estrutura armazenada através de encadeamento 
apresenta seus nodos alocados em posições aleatórias na 
memória, e não lado a lado. Dessa forma, existem várias 
vantagens no uso de representar os dados por encadeamento. 
Marque a alternativa correta que apresenta estas vantagens. 
 
 
Proteção de memória, transferência de dados, estruturas simples. 
 
Previsão de espaço físico, estruturas complexas, procedimentos menos intuitivos. 
 
 
Compartilhamento de memória, maleabilidade e facilidade para inserção e remoção de 
componentes. 
 
Transferência de dados, gerenciamento de memória e procedimentos menos intuitivos. 
 
Acesso, representação, compartilhamento de memória. 
 
 
 
Explicação: 
FALSO . Previsão de espaço físico, estruturas 
complexas, procedimentos menos intuitivos. 
 
FALSO Acesso, representação, compartilhamento de memória. 
 
FALSO 
Proteção de memória, transferência de dados, estruturas 
simples. 
 
FALSO Transferência de dados, gerenciamento de memória e 
procedimentos menos intuitivos. 
 
VERDADEIRO 
Compartilhamento de memória, maleabilidade e facilidade 
para inserção e remoção de componentes. 
 
 
 
Gabarito Coment. 
 
 
 
 
 
 
5. 
 
 
A linguagem C++ oferece quatro meios de criação de tipos de 
dados: matrizes, estruturas ou structs, uniões e classes. As 
estruturas, que passaremos a chamar simplesmente de structs, 
são tipos de variáveis que agrupam dados geralmente desiguais, 
enquanto matrizes são variáveis que agrupam dados similares. 
Devido a esta característica as structs são utilizadas para modelar 
nodos (nós) de estruturas dinâmicas. Portanto podemos afirmar 
que: 
 
 
As estruturas dinâmicas são assim chamadas, pois não podem fazer alocação de memória em 
tempo de execução, mas mesmo assim conseguem ter seus tamanhos alterados de acordo com 
a demanda. 
 
 
As estruturas dinâmicas são assim chamadas, pois podem fazer alocação de memória em tempo 
de execução e terem seus tamanhos alterados de acordo com a demanda. 
 
As estruturas dinâmicas são assim chamadas, pois podem fazer alocação de memória em tempo 
de compilação e entretanto seus tamanhos só são alterados na codificação de acordo com a 
demanda. 
 
As estruturas dinâmicas são assim chamadas, pois podem fazer alocação de memória em tanto 
em tempo de execução quanto em tempo de compilação, mas não podem ter seus tamanhos 
alterados de acordo com a demanda. 
 
As estruturas dinâmicas são assim chamadas, pois podem fazer alocação de memória em tempo 
de compilação e terem seus tamanhos alterados de acordo com a demanda. 
 
 
 
 
 
 
6. 
 
 
E C++, quando um ponteiro é declarado para uma struct, o 
acesso aos campos deste registro (struct) se dá pelo operador : 
 
 
∙ (ponto). 
 
& (e comercial ou eitza). 
 
* (asterisco). 
 
, (vírgula). 
 
 
-> (seta). 
 
 
 
Explicação: 
Por definição, o operador é o seta, pois se tem, no caso, ponteiro para struct. 
 
 
 
 
 
 
7. 
 
 Tei Ping , famosa cabeleireira das 
estrelas, possui uma lista não ordenada de clientes 
 
em que registra apenas o nome, endereço e o 
telefone de cada cliente. Como não se pode pré-
definir um limite para o tamanho da lista, como se 
pode implementar a inserção de um novo cliente 
na lista ? Sabe-se que cada cliente é do tipo 
Cliente e a lista é do tipo List assim definidos : 
 
struct Cliente { 
 long int matricula; 
 string nome, endereco e tel; 
}; 
struct List { 
 Cliente p; 
 struct List *link; 
 }; 
 
 
List insereCliente(List *i, Cliente c) 
{ 
 List novo[]; 
 novo[0].p = c; 
 novo[0].link = i; 
 return novo; 
} 
 
 List * insereCliente(List *i, Cliente c) 
{ 
 List *novo = new List; 
 novo.p = c; 
 novo.link = i; 
 return novo; 
} 
 
List * insereCliente(List *i) { 
 List *novo = new List; 
 Cliente c; 
 novo->p = c; 
 novo->link = i; 
 return novo; 
} 
 
 
List * insereCliente(List *i, Cliente c) 
{ 
 List *novo = new List; 
 novo->p = c; 
 novo->link =i; 
 return novo;} 
 
List * insereCliente(List *i, Cliente c){ 
 List *novo ; 
 novo->p = c; 
 novo->link = i; 
 return novo; 
} 
 
 
 
Explicação: 
Analisando a resposta certa : 
List * insereCliente(List *i, Cliente c) 
{ 
 List *novo = new List; //aloca memória para novo nó 
 novo->p = c; //acessa o campo p da área apontada por novo e atribui o cliente c ao campo p 
 novo->link =i; //faz o link do novo nó apontar para onde i está apontando 
 return novo; //retorna o endereço do novo nó 
} 
Logo, esta função insere um novo nó no início de uma lista simplesmente encadeada e retorna o ponteiro para o 
início da lista resultante. 
Analisando as demais opções, que estão erradas : 
2o. item .... Opção errada : faltou alocar memória 
3o. item .... Opção errada : Cliente c não está definido. 
4o. item .... Opção errada : Usa ponto quando deveria ser o operador seta 
5o. item .... Opção errada : Muitos erros... Usa vetor sem definir tamanho e trabalha com o elemento de 
índice zero de novo, acessando os campos com ponto. 
 
 
 
 
 
 
8. 
 
 
Sobre listas simplesmente encadeadas, é INCORRETO afirmar que 
: 
 
 
 
possuem tamanho fixo 
 
são acessadas através de um ponteiro para o primeiro nó da lista 
 
o ponteiro do último nó é NULL 
 
os nós da lista são alocados dinamicamente. 
 
podem implementar pilha e fila dinâmicas 
 
 
 
Explicação: 
Por definição, uma lista encadeada não tem tamanho pré-definido, pois os nós da lista são alocados em 
tempo de execução, de acordo com a demanda. 
 
 
 
 
 
 
 
Legenda: Questão não respondida Questão não gravada Questão gravada 
 
 
 
Exercício inciado em 20/11/2018 12:39:59.

Continue navegando

Outros materiais