Buscar

TESTE DE CONHECIMENTO AULA 8 ESTRUTURA DE DADOS

Prévia do material em texto

ESTRUTURA DE DADOS 
8a aula Lupa 
 
 
Vídeo 
 
PPT 
 
MP3 
 
 
 
 
Exercício: CCT0260_EX_A8_201701230852_V1 Matrícula: 201701230852 
Aluno(a): JULIANO AZEVEDO DOS SANTOS Data: 31/10/2017 21:09:41 (Finalizada) 
 
 
 1a Questão (Ref.: 201701515060) Fórum de Dúvidas (0) Saiba (0) 
 
QUAL A SAÍDA DO PROGRAMA ABAIXO? 
 
 
#include 
 
main() 
{ 
 int x=5,*p; 
 p=&x; 
 
 cout << x - *p << " " << **&*&p + 1 << " " << *p*2+*p << " " << x+**&p; 
 system("pause"); 
} 
 
 
 
0 6 15 11 
 
1 6 15 12 
 
0 6 16 14 
 
0 6 15 10 
 
0 8 16 10 
 
 
 
 
 2a Questão (Ref.: 201701858486) Fórum de Dúvidas (0) Saiba (0) 
 
Assinale a alternativa correta sobre alocação de memória. 
 
 
A declaração de um vetor é um exemplo clássico de alocação dinâmica de memória. 
 
É correto afirmar que a alocação dinâmica de memória sempre leva a programas mais rápidos. 
 
Alocação estática de memória refere-se ao processo de alocar memória com o uso de 
ponteiros. 
 
Uma das vantagens da alocação dinâmica sobre a alocação estática é que não é necessário 
fazer a liberação da memória utilizada. 
 
Na alocação dinâmica de memória, a memória é alocada sob demanda, apenas quando 
necessário. 
 
 
 
 
 3a Questão (Ref.: 201701851913) Fórum de Dúvidas (0) Saiba (0) 
 
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 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. 
 
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. 
 
 
 
 
 4a Questão (Ref.: 201701873069) Fórum de Dúvidas (0) Saiba (0) 
 
Considere uma lista simplesmente encadeada com placas de carros. Assinale a opção que, corretamente, imprime todas as 
placas da lista. Considere : 
struct no { 
 string placa; 
 struct no *link; 
}; 
no *p; //p aponta para o início da lista 
 
 
 
 
 
void imprimir(no *p) { 
 while (p != NULL) { 
 cout << p.placa; 
 p = p.link; 
 } 
} 
 
 
void imprimir(no p) { 
 while (p != NULL) { 
 cout << pno; 
 p = plink; 
 } 
} 
 
 
void imprimir(no *p) { 
 while (p != NULL) { 
 cout << pplaca; 
 p = plink; 
} 
} 
 
 
void imprimir(no *p) { 
 while (p != NULL) { 
 cout << pplaca; 
 } 
} 
 
 
void imprimir(no *p) { 
 if (p != NULL) { 
 cout << pplaca; 
 p = plink; 
 } 
} 
 
Gabarito Comentado 
 
 
 
 5a Questão (Ref.: 201701904450) Fórum de Dúvidas (0) Saiba (0) 
 
Assumindo que um valor do tipo inteiro ocupa 4 bytes na memória, e se baseando nas linhas de 
código abaixo, marque a alternativa correta: 
int *p; 
p = (int *)malloc(20*sizeof(int)); 
 
 
Alocação dinâmica de 80 bytes na memória 
 
A operação é inválida 
 
Alocação dinâmica 20 bytes na memória 
 
Alocação dinâmica de espaço de memória suficiente para armazenar 20 x 4 valores inteiros 
 
Atribuição ao ponteiro ¿p¿ de um endereço estático de memória 
 
 
 
 
 6a Questão (Ref.: 201701515059) Fórum de Dúvidas (0) Saiba (0) 
 
QUAL A SAÍDA DESTE PROGRAMA? 
 
#include 
main() 
{ 
 int i=10,*p; 
 p=&i; 
 
 cout << *p << " " << i + *p<< " " << *p**p << " " << i+**&p; 
 system("pause"); 
} 
 
 
 
10 20 104 22 
 
10 20 100 22 
 
10 24 102 25 
 
10 25 100 30 
 
10 20 100 20 
 
 
 
 
 7a Questão (Ref.: 201701823448) Fórum de Dúvidas (0) Saiba (0) 
 
Uma lista linear implementada através de encadeamento deve apresentar obrigatoriamente: 
i) um ponteiro para o primeiro nó da lista; 
ii) encadeamento entre os nós, através de algum campo de ligação; 
iii) não deve haver uma indicação de final da lista; 
iv) um ponteiro para o final da lista. 
Levando em consideração as afirmações apresentadas, qual das alternativas é a correta? 
 
 
somente a afirmação i esta correta. 
 
as afirmações i, ii e iii estão corretas. 
 
as afirmações ii e iv estão corretas. 
 
somente a afirmação iv esta correta. 
 
as afirmações i e ii estão corretas. 
 
 
 
 
 8a Questão (Ref.: 201701820630) Fórum de Dúvidas (0) Saiba (0) 
 
Numa Lista Encadeada, podemos afirmar que: 
 
I) Todos os nós são alocados de uma única vez. 
II) Os nós não são alocados contiguamente na memória obrigatoriamente. 
III) Os elementos de uma lista encadeada são ligados por dois ponteiros. 
IV) Para que possamos percorrer toda a lista, precisamos armazenar o endereço do próximo elemento para 
possibilitar o encadeamento. 
 
 
I, III e IV estão corretas 
 
Só a II está correta 
 
I, II, III e IV estão corretas 
 
II e IV estão corretas 
 
I , II e III estão corretas 
 
Gabarito Comentado 
 
 
 
 
ESTRUTURA DE DADOS 
8a aula Lupa 
 
 
Vídeo 
 
PPT 
 
MP3 
 
 
 
 
Exercício: CCT0260_EX_A8_201701230852_V2 Matrícula: 201701230852 
Aluno(a): JULIANO AZEVEDO DOS SANTOS Data: 20/11/2017 22:32:09 (Finalizada) 
 
 
 1a Questão (Ref.: 201701521064) Fórum de Dúvidas (0) Saiba (0) 
 
Dr. Pei Tam possui uma lista não ordenada de pacientes de seu consultório em que registra apenas 
o nome endereço e o telefone de cada paciente. Como não há limites para o crescimento de sua 
lista, como se pode implementar a inserção de um novo paciente na lista, sabendo que cada 
paciente é do tipo Paciente e a lista é do tipo List assim definidos : 
struct Paciente { 
 long int matricula; 
 string nome, endereco e tel; 
}; 
struct List { 
 Paciente p; 
 struct List *link; 
 }; 
 
 
 List * inserePac(List *i, Paciente pac) 
{ 
 List *novo = new List; 
 novo.p = pac; 
 novo.link = i; 
 return novo; 
} 
 
List * inserePac(List *i, Paciente pt){ 
 List *novo ; 
 novo->p = pt; 
 novo->link = i; 
 return novo; 
} 
 
List insereCliente(List *i, Paciente pac) 
{ 
 List novo[]; 
 novo[0].p = pac; 
 novo[0].link = i; 
 returnnovo; 
} 
 
List * inserePac(List *i, Paciente pt) 
{ 
 List *novo = new List; 
 novo->p = pt; 
 novo->link =i; 
 return novo; 
} 
 
List * inserePac(List *i) { 
 List *novo = new List; 
 Paciente pat; 
 novo->p = pat; 
 novo->link = i; 
 return novo; 
} 
 
Gabarito Comentado 
 
 
 
 2a Questão (Ref.: 201701854581) Fórum de Dúvidas (0) Saiba (0) 
 
Em uma rotina em que se pretenda inserir o primeiro dado em uma estrutura dinâmica, é correto 
afirmar que: 
 
 
Não deve existir uma estrutura de repetição. 
 
Existe uma instrução de repetição para percorrer a lista. 
 
Só deve existir estrutura de repetição se ocorrer a inclusão de mais de um dado 
simultaneamente 
 
Deve existir uma estrutura de repetição somente se a estrutura for circular. 
 
Deve existir uma estrutura de repetição somente de a lista for duplamente encadeada. 
 
Gabarito Comentado 
 
 
 
 3a Questão (Ref.: 201701904454) Fórum de Dúvidas (0) Saiba (0) 
 
Em uma aplicação que usa processos de alocação estática e dinâmica de memória é correto afirmar 
que 
 
 
Toda a memória utilizada pela aplicação não muda durante toda a sua execução 
 
A memória utilizada pela aplicação é inicialmente estática, mas pode mudar 
 
A memória utilizada pela aplicação é totalmente alocada após o inicio de sua execução 
 
Todas as afirmações acima são incorretas 
 
Apenas a memória associada às variáveis do tipo vetor é alocada após o inicio da execução da 
aplicação 
 
Gabarito Comentado 
 
 
 
 4a Questão (Ref.: 201701820624) Fórum de Dúvidas (0) Saiba (0) 
 
Na Alocação dinâmica, temos alguma regras a considerar. Leia atentamente as afirmativas abaixo e assinale 
a correta. 
 
I Alocou com new, desaloca com free 
II Alocou com new[], desaloca com delete 
III Alocou com new[], desaloca com delete[] 
IV Alocou com new[], desaloca com free[] 
V Alocou com new, desaloca com delete 
 
 
II e V estão corretas 
 
I e III estão corretas 
 
I e IV estão corretas 
 
I, II, III e V estão corretas 
 
III e V estão corretas 
 
 
 
 
 5a Questão (Ref.: 201701823448) Fórum de Dúvidas (0) Saiba (0) 
 
Uma lista linear implementada através de encadeamento deve apresentar obrigatoriamente: 
i) um ponteiro para o primeiro nó da lista; 
ii) encadeamento entre os nós, através de algum campo de ligação; 
iii) não deve haver uma indicação de final da lista; 
iv) um ponteiro para o final da lista. 
Levando em consideração as afirmações apresentadas, qual das alternativas é a correta? 
 
 
somente a afirmação i esta correta. 
 
as afirmações i, ii e iii estão corretas. 
 
as afirmações i e ii estão corretas. 
 
somente a afirmação iv esta correta. 
 
as afirmações ii e iv estão corretas. 
 
 
 
 
 6a Questão (Ref.: 201701820612) Fórum de Dúvidas (0) Saiba (0) 
 
O conceito de ponteiros foi estudado em uma de nossas aulas. Sendo assim, leia atentamente as afirmativas 
abaixo e assinale a opção correta. 
 
I A variável ponteiro não precisa ser declarada. 
II A variável ponteiro armazena endereço. 
III Quanto se usa &nomeDaVariávelPonteiro com o comando cout, é exibido o endereço da variável 
apontada pela variável ponteiro. 
IV Quando se usa nomeDaVariávelPonteiro com o comando cout, é exibido o endereço da variável 
ponteiro. 
V Quando se usa *nomeDaVariávelPonteiro com o comando cout, é exibido o conteúdo da variável 
apontada pela variável ponteiro. 
 
 
I, II e IV estão corretas 
 
II e V estão corretas 
 
IV e V estão corretas 
 
Somente a II está correta 
 
I IV e V estão corretas 
 
Gabarito Comentado 
 
 
 
 7a Questão (Ref.: 201701945044) Fórum de Dúvidas (0) Saiba (0) 
 
As funções abaixo tem objetivos de: 
 
 
 
A primeira faz uma busca retornando o valor do nó ou NULL quando não 
encontrado, já a segunda insere um novo nó no final da LSE; 
 
A primeira faz uma busca retornando o endereço do nó ou NULL quando 
não encontrado, já a segunda insere um novo nó no final da LSE; 
 
A primeira faz uma busca retornando a posição do nó ou NULL quando não 
encontrado, já a segunda insere um novo nó no inicio da LSE; 
 
A primeira faz uma busca retornando o endereço do nó ou NULL quando 
não encontrado, já a segunda insere um novo nó no inicio da LSE; 
 
A primeira faz uma busca retornando o valor do nó ou NULL quando não 
encontrado, já a segunda insere um novo nó no inicio da LSE; 
 
 
 
 
 8a Questão (Ref.: 201702021535) Fórum de Dúvidas (0) Saiba (0) 
 
Considere 
 
int *ptr, *qtr, *r; 
 
int a = 10, b = 20; 
 
 
 
Após executar cada instrução conforme a ordem dada a seguir : 
 
 
ptr = &a; 
 
qtr = &b; 
 
*ptr = *ptr + *qtr; 
 
++(*qtr); 
 
r = qtr; 
 
qtr = ptr; 
 
 
 
assinale a opção que mostra, correta e respectivamente, os valores de *ptr, *qtr 
, *r , a e b . 
 
 
 
 
30 20 20 10 20 
 
30 30 21 30 21 
 
30 21 21 10 20 
 
30 30 21 10 20 
 
30 20 0 30 21 
 
 
ESTRUTURA DE DADOS 
8a aula Lupa 
 
 
Vídeo 
 
PPT 
 
MP3 
 
 
 
 
Exercício: CCT0260_EX_A8_201701230852_V3 Matrícula: 201701230852 
Aluno(a): JULIANO AZEVEDO DOS SANTOS Data: 20/11/2017 23:00:26 (Finalizada) 
 
 
 1a Questão (Ref.: 201701858480) Fórum de Dúvidas (0) Saiba (0) 
 
Qual das inicializações de ponteiros apresentadas abaixo está correta? 
 
 
int *p = create int; 
 
int *p = new int*; 
 
int *p = new int; 
 
int *p = new *int; 
 
int *p = new int[]; 
 
 
 
 
 2a Questão (Ref.: 201701519928) Fórum de Dúvidas (0) Saiba (0) 
 
Sou uma empresária que quer crescer e por isso, tenho que aumentar progressivamente a minha lista 
de clientes, sem limitar este crescimento. Assim, à medida que novos clientes são cadastrados, 
posso, se necessário, contratar mais e mais empregados. Marque a opção que especifica o tipo de 
lista e o tipo de alocação de memória mais adequados para este problema. 
 
 
lista encadeada e alocação dinâmica de memória 
 
fila encadeada e alocação dinâmica de memória 
 
lista sequencial e alocação dinâmica de memória 
 
fila dinâmica e alocação dinâmica de memória 
 
pilha dinâmica e alocação dinâmica de memória 
 
Gabarito Comentado 
 
 
 
 3a Questão (Ref.: 201701519929) Fórum de Dúvidas (0) Saiba (0) 
 
Montei uma biblioteca popular que aceita doações sem limites. Marque a opção que especifica o tipo 
de lista e o tipo de alocação de memória mais adequados para este problema. 
 
 
fila dinâmica e alocação dinâmica de memória 
 
fila encadeada e alocação dinâmica de memória 
 
lista encadeada e alocação dinâmica de memória 
 
pilha dinâmica e alocação dinâmica de memória 
 
lista sequencial e alocação dinâmica de memória 
 
Gabarito Comentado 
 
 
 
 4a Questão (Ref.: 201701820630) Fórum de Dúvidas (0) Saiba (0) 
 
Numa Lista Encadeada, podemos afirmar que: 
 
I) Todos os nós são alocados de uma única vez. 
II) Os nós não são alocados contiguamente na memória obrigatoriamente. 
III) Os elementos de uma lista encadeada são ligados por dois ponteiros. 
IV) Para que possamos percorrer toda a lista, precisamos armazenar o endereço do próximo elemento para 
possibilitaro encadeamento. 
 
 
I, II, III e IV estão corretas 
 
I, III e IV estão corretas 
 
I , II e III estão corretas 
 
II e IV estão corretas 
 
Só a II está correta 
 
Gabarito Comentado 
 
 
 
 5a Questão (Ref.: 201701823489) Fórum de Dúvidas (0) Saiba (0) 
 
Podemos dizer que uma lista encadeada tem as seguintes características: 
i) conhecida como lista ligada. 
ii) seus nós são responsáveis para manter a sequência da lista. 
iii) o último nó deve apontar para NULL. 
Assinale a alternativa que informa as afirmativas corretas. 
 
 
Todas as afirmativas estão corretas. 
 
Todas as afirmativas estão incorretas. 
 
Somente as afirmativas i e ii estão corretas. 
 
Somente a afirmativa i esta correta. 
 
Somente a afirmativa iii esta correta. 
 
Gabarito Comentado 
 
 
 
 6a Questão (Ref.: 201701515059) Fórum de Dúvidas (0) Saiba (0) 
 
QUAL A SAÍDA DESTE PROGRAMA? 
 
#include 
main() 
{ 
 int i=10,*p; 
 p=&i; 
 
 cout << *p << " " << i + *p<< " " << *p**p << " " << i+**&p; 
 system("pause"); 
} 
 
 
 
10 20 100 20 
 
10 24 102 25 
 
10 20 100 22 
 
10 20 104 22 
 
10 25 100 30 
 
 
 
 
 7a Questão (Ref.: 201701281556) Fórum de Dúvidas (0) Saiba (0) 
 
Em relação as estruturas de dados, aquela que corresponde ao armazenamento em uma lista linear 
com a posição relativa (não contígua) na memória de dois nós consecutivos da lista é conhecida por 
alocação: 
 
 
Encadeada. 
 
Combinada. 
 
Seqüencial. 
 
Estática. 
 
Binária. 
 
Gabarito Comentado 
 
 
 
 8a Questão (Ref.: 201701851913) Fórum de Dúvidas (0) Saiba (0) 
 
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 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 
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 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 
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.

Outros materiais

Materiais relacionados

Perguntas relacionadas

Perguntas Recentes