Buscar

Estrutura de Dados - Exercicio Aula 08

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 24 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

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 6, do total de 24 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

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 9, do total de 24 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

Prévia do material em texto

ESTRUTURA DE DADOS 
8a aula 
 
 
Lupa 
 
 
 
Vídeo 
 
PPT 
 
MP3 
 
 
 
 
Exercício: GDU0412_EX_A8_201602020752_V1 Matrícula: 201602020752 
Aluno(a): JOÃO LÚCIO ALMEIDA DA SILVA Data: 23/10/2017 03:40:42 (Finalizada) 
 
 
 1a Questão (Ref.: 201602288819) 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. 
 
 
 
lista sequencial e alocação dinâmica de memória 
 lista encadeada e alocação dinâmica de memória 
 
fila encadeada 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 
 
 
 
 
 2a Questão (Ref.: 201602050620) Fórum de Dúvidas (0) Saiba (0) 
 
Em uma lista linear simplesmente encadeada. 
 
 
 
Além do campo relativo ao dado, cada nó possui dois ponteiros, 
 
O ponteiro do "último" nó não é NULL, mas sim aponta de volta para o "primeiro" nó da lista. 
 Cada nó possui um só ponteiro que referencia o próximo nó da lista. 
 
O ponteiro do "primeiro" nó não é NULL, mas sim aponta de volta para o "primeiro" nó da lista, formando 
um ciclo. 
 
Cada ponteiro possui um só endereço que referencia o primeiro nó da lista. 
 
 Gabarito Comentado 
 
 
 
 
 3a Questão (Ref.: 201602592379) 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. 
 
Somente as afirmativas i e ii estão corretas. 
 
Todas as afirmativas estão incorretas. 
 
Somente a afirmativa i esta correta. 
 
Somente a afirmativa iii esta correta. 
 
 Gabarito Comentado 
 
 
 
 
 4a Questão (Ref.: 201602289948) Fórum de Dúvidas (0) Saiba (0) 
 
 Tenho uma lista não ordenada de clientes em que registro apenas a matrícula, o nome, o 
endereço e o telefone de cada cliente. Como não tenho limites para o crescimento da minha lista, 
como posso implementar a inserção de um novo cliente na lista, sabendo que cada cliente é do 
tipo Cliente e a lista é do tipo Lista assim definidos : 
struct Cliente { 
 long int matricula; 
 string nome, endereco, tel; 
}; 
struct Lista { 
 Cliente c; 
 struct Lista *link; 
 }; 
 
 
 Lista * insereCliente(Lista *p, Cliente cl) 
{ 
 Lista *novo = new Lista; 
 novo.c = cl; 
 novo.link = p; 
 return novo; 
} 
 Lista insereCliente(Lista *p, Cliente cl) 
{ 
 Lista novo[]; 
 novo[0].c = cl; 
 novo[0].link = p; 
 return novo; 
} 
 
 Lista * insereCliente(Lista *p, Cliente cl) 
{ 
 Lista *novo ; 
 novo->c = cl; 
 novo->link = p; 
 return novo; 
} 
 Lista * insereCliente(Lista *p) { 
 Lista *novo = new Lista; 
 Cliente cl; 
 novo->c = cl; 
 novo->link = p; 
 return novo; 
} 
 Lista * insereCliente(Lista *p, Cliente cl) 
{ 
 Lista *novo = new Lista; 
 novo->c = cl; 
 novo->link = p; 
 return novo; 
} 
 
 Gabarito Comentado 
 
 
 
 
 5a Questão (Ref.: 201602050931) Fórum de Dúvidas (0) Saiba (0) 
 
Para a criação de uma Fila seqüencial basta iniciar as variáveis de início e final, ou seja, apontá-las para as 
posições iniciais do vetor. O que alteraria na rotina de inserir se a variável final fosse inicializada com o valor -1 
(menos um): 
 
 
 
Após a inserção deve-se fazer o decremento da variável final 
 Antes da inserção deve-se fazer o incremento da variável final 
 
Após a inserção deve-se fazer o incremento da variável final 
 
Após a inserção deve-se fazer o incremento da variável inicio 
 
Antes da inserção deve-se fazer o decremento da variável final 
 
 Gabarito Comentado 
 
 
 
 
 6a Questão (Ref.: 201602713934) 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 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; 
 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; 
 
 
 
 
 
 
 7a Questão (Ref.: 201602288818) 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. 
 
 
 
pilha dinâmica e alocação dinâmica de memória 
 
fila dinâmica e alocação dinâmica de memória 
 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 
 
 Gabarito Comentado 
 
 
 
 
 8a Questão (Ref.: 201602050758) Fórum de Dúvidas (0) Saiba (0) 
 
Marque a afirmativa que represente uma concatenação em listas. 
 
 
 
Consiste em dividir a lista em duas outras listas. A quantidade de nós que cada lista terá, depende da 
necessidade. 
 
Alterar a ordem dos dados da lista do final para o início, atualizando a lista. 
 
Intercalar a ordem dos dados da lista do final para o início, atualizando a lista. 
 Organizar os dados da lista em ordem crescente ou decrescente. 
 Juntar duas listas, colocando uma lista no final de outra, obtendo, ao final, uma só lista resultante. 
 
 
ESTRUTURA DE DADOS 
8a aula 
 
 
Lupa 
 
 
 
Vídeo 
 
PPT 
 
MP3 
 
 
 
 
Exercício: GDU0412_EX_A8_201602020752_V2 Matrícula: 201602020752 
Aluno(a): JOÃO LÚCIO ALMEIDA DA SILVA Data: 23/10/2017 03:54:11 (Finalizada) 
 
 
 1a Questão (Ref.: 201602641959) 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) { 
 if (p != NULL) { 
 cout << pplaca; 
 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) { 
 while (p != NULL) { 
 cout << pno; 
 p = plink; 
 } 
} 
 
 
 Gabarito Comentado 
 
 
 
 
 2a Questão (Ref.: 201602623471) 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: 
 
 
 
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. 
 Não deve existir uma estrutura de repetição. 
 Existe uma instrução de repetição para percorrer a lista. 
 
Deve existir uma estrutura de repetição somente de a lista for duplamente encadeada. 
 
 Gabarito Comentado 
 
 
 
 
 3a Questão (Ref.: 201602673343) Fórum de Dúvidas (0) Saiba (0) 
 
Em uma aplicação que usa apenas o processo de alocação estática 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 é totalmente alocada após o inicio de sua execução 
 
Apenas a memória associada às variáveis do tipo vetor é alocada após o inicio da execução da aplicação 
 
A memória utilizada pela aplicação é inicialmente estática, mas pode mudar 
 
Todas as afirmações acima são incorretas 
 
 Gabarito Comentado 
 
 
 
 
 4a Questão (Ref.: 201602289954) 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 pt){ 
 List *novo ; 
 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; 
} 
 List * inserePac(List *i, Paciente pac) 
{ 
 List *novo = new List; 
 novo.p = pac; 
 novo.link = i; 
 return novo; 
} 
 List insereCliente(List *i, Paciente pac) 
{ 
 List novo[]; 
 novo[0].p = pac; 
 novo[0].link = i; 
 return novo; 
} 
 List * inserePac(List *i, Paciente pt) 
{ 
 List *novo = new List; 
 novo->p = pt; 
 novo->link =i; 
 return novo; 
} 
 
 Gabarito Comentado 
 
 
 
 
 5a Questão (Ref.: 201602673344) 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 
 
 
 A memória utilizada pela aplicação é inicialmente estática, mas pode mudar 
 
Todas as afirmações acima são incorretas 
 A memória utilizada pela aplicação é totalmente alocada após o inicio de sua execução 
 
Apenas a memória associada às variáveis do tipo vetor é alocada após o inicio da execução da aplicação 
 
Toda a memória utilizada pela aplicação não muda durante toda a sua execução 
 
 Gabarito Comentado 
 
 
 
 
 6a Questão (Ref.: 201602050966) Fórum de Dúvidas (0) Saiba (0) 
 
Na área de estrutura de dados, em determinados casos, é necessário utilizar um tipo de dado onde seu valor 
serve como referência direta a outro valor alocado em outro espaço de memória. Este tipo de dado se chama: 
 
 
 
Vetor 
 
Matriz 
 
Endereço 
 
Variável 
 Ponteiro 
 
 Gabarito Comentado 
 
 
 
 
 7a Questão (Ref.: 201602627370) Fórum de Dúvidas (0) Saiba (0) 
 
Qual das inicializações de ponteiros apresentadas abaixo está correta? 
 
 
 
int *p = new *int; 
 
int *p = new int[]; 
 
int *p = create int; 
 int *p = new int; 
 
int *p = new int*; 
 
 
 
 
 
 
 8a Questão (Ref.: 201602283949) 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 25 100 30 
 10 20 100 20 
 
10 24 102 25 
 
10 20 100 22 
 
10 20 104 22 
 
 
 
ESTRUTURA DE DADOS 
8a aula 
 
 
Lupa 
 
 
 
Vídeo 
 
PPT 
 
MP3 
 
 
 
 
Exercício: GDU0412_EX_A8_201602020752_V3 Matrícula: 201602020752 
Aluno(a): JOÃO LÚCIO ALMEIDA DA SILVA Data: 23/10/2017 04:03:11 (Finalizada) 
 
 
 1a Questão (Ref.: 201602790425) 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 21 21 10 20 
 
30 20 0 30 21 
 
30 30 21 10 20 
 30 30 21 30 21 
 
 
 
 
 
 
 2a Questão (Ref.: 201602589514) 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 
 
 
 I, II, III e V estão corretas 
 I e IV estão corretas 
 I e III estão corretas 
 III e V estão corretas 
 II e V estão corretas 
 
 
 
 
 
 
 3a Questão (Ref.: 201602283950) 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 10 
 
0 6 16 14 
 
0 8 16 10 
 
1 6 15 12 
 
0 6 15 11 
 
 
 
 
 
 
 4a Questão (Ref.: 201602589502) 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 
 I IV e V estão corretas 
 Somente a II está correta 
 
 Gabarito Comentado 
 
 
 
 
 5a Questão (Ref.: 201602592338) Fórum de Dúvidas (0) Saiba (0) 
 
Uma lista linear implementada atravésde 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? 
 
 
 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. 
 
as afirmações i, ii e iii estão corretas. 
 somente a afirmação i esta correta. 
 
 
 
 
 
 
 6a Questão (Ref.: 201602054013) Fórum de Dúvidas (0) Saiba (0) 
 
Em algumas situações, principalmente na utilização de listas, há a necessidade de posicionar o ponteiro em 
determinado local da lista. Dessa forma, analisando o trecho de código abaixo, que mostra uma função, assinale 
a alternativa correta que descreve o objetivo desta. Sabe-se que o sinal de asterisco (*) sinaliza um ponteiro. 
void funcao (Nodo **P){ 
 if ( *P != NULL ){ 
 while ( (*P) -> Anterior != NULL ) 
 *P= (*P) -> Anterior; 
 } 
} 
 
 
 
Posicionar o ponteiro no final da lista 
 Posicionar o ponteiro no início da lista 
 
Colocar o valor NULL em todos os ponteiros 
 Posicionar o ponteiro no meio da lista 
 
Posicionar o ponteiro onde houver o valor NULL 
 
 Gabarito Comentado 
 
 
 
 
 7a Questão (Ref.: 201602050944) Fórum de Dúvidas (0) Saiba (0) 
 
Para simular uma lista encadeada simplesmente pode se utilizar as estruturas de ponteiros. Como pode ser 
definida uma estrutura do tipo ponteiro? 
 
 
 
Uma estrutura que aponta para um objeto de arquivo. 
 Um objeto que contém um endereço de memória. 
 
Um objeto que armazena dado diretamente na memória. 
 
Uma estrutura utilizada apontar erros de operações. 
 
Um objeto que não contém endereço de memória. 
 
 Gabarito Comentado 
 
 
 
 
 8a Questão (Ref.: 201602050446) 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: 
 
 
 
Combinada. 
 Encadeada. 
 
Seqüencial. 
 
Estática. 
 
Binária. 
 
 
ESTRUTURA DE DADOS 
8a aula 
 
 
Lupa 
 
 
 
Vídeo 
 
PPT 
 
MP3 
 
 
 
 
Exercício: GDU0412_EX_A8_201602020752_V4 Matrícula: 201602020752 
Aluno(a): JOÃO LÚCIO ALMEIDA DA SILVA Data: 23/10/2017 04:15:33 (Finalizada) 
 
 
 1a Questão (Ref.: 201602050759) Fórum de Dúvidas (0) Saiba (0) 
 
Marque a afirmativa que represente uma separação. 
 
 
 
Organizar os dados da lista em ordem crescente ou decrescente. 
 
Alterar a ordem dos dados da lista do final para o início, atualizando a lista. 
 Consiste em dividir a lista em duas outras listas. A quantidade de nós que cada lista terá, depende da 
necessidade. 
 
Juntar duas listas, colocando uma lista no final de outra, obtendo, ao final, uma só lista resultante. 
 
Intercalar a ordem dos dados da lista do final para o início, atualizando a lista. 
 
 Gabarito Comentado 
 
 
 
 
 2a Questão (Ref.: 201602589520) 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. 
 
 
 Só a II está correta 
 I, II, III e IV estão corretas 
 I, III e IV estão corretas 
 II e IV estão corretas 
 I , II e III estão corretas 
 
 Gabarito Comentado 
 
 
 
 
 3a Questão (Ref.: 201602620803) 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 
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. 
 
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. 
 
 
 
 
 
 
 4a Questão (Ref.: 201602627376) 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. 
 
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. 
 
Alocação estática de memória refere-se ao processo de alocar memória com o uso de ponteiros. 
 
 
 
 
 
 
 5a Questão (Ref.: 201602664515) Fórum de Dúvidas (0) Saiba (0) 
 
As structs (estruturas) são utilizadas para modelar os nodos de estruturas dinâmicas como, por exemplo, as 
listas encadeadas, seja o seguinte exemplo de nodo de uma lista de produtos: struct nodo{ float valor; string 
produto; nodo * proximo; }; Suponha que um determinado ponteiro pt esteja apontando para um nodo desta 
lista, e que se queira alterar o conteúdo do campo valor deste nodo, que está sendo apontado por pt, para 5.60. 
Marque a alternativa que corretamente possibilita esta operação: 
 
 
 
pt->próximo->valor=5.60; 
 pt->valor=5.60; 
 
pt->5.60; 
 
pt.valor->5.60; 
 
pt->próximo.valor=5.60; 
 
 Gabarito Comentado 
 
 
 
 
 6a Questão (Ref.: 201602673340) 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 20 bytes na memória 
 A operação é inválida 
 
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 
 Alocação dinâmica de 80 bytes na memória 
 
 
 
 
 
 
 7a Questão (Ref.: 201602592379) 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ênciada lista. 
iii) o último nó deve apontar para NULL. 
Assinale a alternativa que informa as afirmativas corretas. 
 
 
 
Somente as afirmativas i e ii estão corretas. 
 
Somente a afirmativa i esta correta. 
 Todas as afirmativas estão corretas. 
 
Todas as afirmativas estão incorretas. 
 
Somente a afirmativa iii esta correta. 
 
 Gabarito Comentado 
 
 
 
 
 8a Questão (Ref.: 201602289948) Fórum de Dúvidas (0) Saiba (0) 
 
 Tenho uma lista não ordenada de clientes em que registro apenas a matrícula, o nome, o 
endereço e o telefone de cada cliente. Como não tenho limites para o crescimento da minha lista, 
como posso implementar a inserção de um novo cliente na lista, sabendo que cada cliente é do 
tipo Cliente e a lista é do tipo Lista assim definidos : 
struct Cliente { 
 long int matricula; 
 string nome, endereco, tel; 
}; 
struct Lista { 
 Cliente c; 
 struct Lista *link; 
 }; 
 
 
 Lista * insereCliente(Lista *p) { 
 Lista *novo = new Lista; 
 Cliente cl; 
 novo->c = cl; 
 novo->link = p; 
 return novo; 
} 
 Lista * insereCliente(Lista *p, Cliente cl) 
{ 
 Lista *novo = new Lista; 
 novo->c = cl; 
 novo->link = p; 
 return novo; 
} 
 Lista insereCliente(Lista *p, Cliente cl) 
{ 
 Lista novo[]; 
 novo[0].c = cl; 
 novo[0].link = p; 
 return novo; 
} 
 
 Lista * insereCliente(Lista *p, Cliente cl) 
{ 
 Lista *novo ; 
 novo->c = cl; 
 novo->link = p; 
 return novo; 
} 
 Lista * insereCliente(Lista *p, Cliente cl) 
{ 
 Lista *novo = new Lista; 
 novo.c = cl; 
 novo.link = p; 
 return novo; 
} 
 
ESTRUTURA DE DADOS 
8a aula 
 
 
Lupa 
 
 
 
Vídeo 
 
PPT 
 
MP3 
 
 
 
 
Exercício: GDU0412_EX_A8_201602020752_V5 Matrícula: 201602020752 
Aluno(a): JOÃO LÚCIO ALMEIDA DA SILVA Data: 23/10/2017 04:23:05 (Finalizada) 
 
 
 1a Questão (Ref.: 201602288818) 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 sequencial e alocação dinâmica de memória 
 
pilha dinâmica e alocação dinâmica de memória 
 lista encadeada e alocação dinâmica de memória 
 
fila encadeada e alocação dinâmica de memória 
 
fila dinâmica e alocação dinâmica de memória 
 
 Gabarito Comentado 
 
 
 
 
 2a Questão (Ref.: 201602713934) 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 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 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 valor do nó ou NULL quando não 
encontrado, já a segunda insere um novo nó no final da LSE; 
 
 
 
 
 
 
 3a Questão (Ref.: 201602050620) Fórum de Dúvidas (0) Saiba (0) 
 
Em uma lista linear simplesmente encadeada. 
 
 
 
Cada ponteiro possui um só endereço que referencia o primeiro nó da lista. 
 Cada nó possui um só ponteiro que referencia o próximo nó da lista. 
 
Além do campo relativo ao dado, cada nó possui dois ponteiros, 
 
O ponteiro do "primeiro" nó não é NULL, mas sim aponta de volta para o "primeiro" nó da lista, formando 
um ciclo. 
 
O ponteiro do "último" nó não é NULL, mas sim aponta de volta para o "primeiro" nó da lista. 
 
 Gabarito Comentado 
 
 
 
 
 4a Questão (Ref.: 201602288819) 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 
 lista encadeada e alocação dinâmica de memória 
 
lista sequencial e alocação dinâmica de memória 
 
fila encadeada e alocação dinâmica de memória 
 
pilha dinâmica e alocação dinâmica de memória 
 
 Gabarito Comentado 
 
 
 
 
 5a Questão (Ref.: 201602050758) Fórum de Dúvidas (0) Saiba (0) 
 
Marque a afirmativa que represente uma concatenação em listas. 
 
 
 
Alterar a ordem dos dados da lista do final para o início, atualizando a lista. 
 
Intercalar a ordem dos dados da lista do final para o início, atualizando a lista. 
 
Organizar os dados da lista em ordem crescente ou decrescente. 
 
Consiste em dividir a lista em duas outras listas. A quantidade de nós que cada lista terá, depende da 
necessidade. 
 Juntar duas listas, colocando uma lista no final de outra, obtendo, ao final, uma só lista resultante. 
 
 Gabarito Comentado 
 
 
 
 
 6a Questão (Ref.: 201602050931) Fórum de Dúvidas (0) Saiba (0) 
 
Para a criação de uma Fila seqüencial basta iniciar as variáveis de início e final, ou seja, apontá-las para as 
posições iniciais do vetor. O que alteraria na rotina de inserir se a variável final fosse inicializada com o valor -1 
(menos um): 
 
 
 
Após a inserção deve-se fazer o decremento da variável final 
 
Após a inserção deve-se fazer o incremento da variável final 
 Antes da inserção deve-se fazer o incremento da variável final 
 
Antes da inserção deve-se fazer o decremento da variável final 
 
Após a inserção deve-se fazer o incremento da variável inicio 
 
 Gabarito Comentado 
 
 
 
 
 7a Questão (Ref.: 201602283949) 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 20 104 22 
 
10 25 100 30 
 
10 20 100 22 
 
10 24 102 25 
 
 
 
 
 
 
 8a Questão (Ref.: 201602627370) 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;

Continue navegando

Outros materiais