Buscar

ALOCAÇÃO DINÂMICA - LISTAS ENCADEADAS

Prévia do material em texto

Aluno: 
	Matr.: 
	Disc.: ESTRUTURA DE DADOS 
	2020.1 (G) / 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.
		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 sequencial 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
	
	Gabarito
Coment.
	
	
	
	 
		
	
		2.
		Marque a afirmativa que represente uma separação.
	
	
	
	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.
	
	
	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.
	
	
	Intercalar a ordem dos dados da lista do final para o início, atualizando a lista.
	
	Gabarito
Coment.
	
	
	
	 
		
	
		3.
		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, Paciente pt)
{
      List *novo = new List;
      novo->p = pt;
      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)  {
      List *novo = new List;
     Paciente pat;
      novo->p =  pat;
      novo->link = i;
     return novo;
}
	
	Gabarito
Coment.
	
	
	
	 
		
	
		4.
		Na linguagem C++, temos que :
I.  Se p é um ponteiro, *p é o valor da variável apontada por p.
II.  Um ponteiro pode receber o endereço de uma variável cujo tipo é o mesmo  tipo usado na declaração do ponteiro.
III.  &v apresenta o endereço da variável v.
Qual a alternativa correta?
	
	
	
	Apenas as afirmações II e III estão corretas.
	
	
	Apenas a afirmação II está correta.
	
	
	As afirmações I, II e III estão corretas.
	
	
	Apenas a afirmação I está correta.
	
	
	Apenas as afirmações I e II estão corretas.
	
Explicação:
Analisando cada afirmativa :
I.  Se p é um ponteiro, *p é o valor da variáel apontada por p.
Verdadeira.
II.  Um ponteiro pode receber o endereço de uma variável cujo tipo é o mesmo  tipo usado na declaração do ponteiro.
Verdadeira
III.  &v apresenta o endereço da variável v.
Verdadeira.
Logo, as afirmativas I, II e III estão corretas.
	
	
	
	 
		
	
		5.
		Tem-se uma estrutura de dados do tipo lista encadeada com 10 elementos, em que o primeiro e o último elemento estão ligados entre si. Trata-se de uma estrutura de dados denominada Lista
	
	
	
	Binária
	
	
	Encadeada Circular
	
	
	Balanceada
	
	
	Duplamente Encadeada
	
	
	Invertida
	
Explicação:
Uma lista encadeada circular é uma lista encadeada e portanto, dinÂmica, em que o ponteiro do último nó aponta para o primeiro nó. A lista circular também pode ser vazia.
	
	
	
	 
		
	
		6.
		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->próximo->valor=5.60;
	
	
	pt.valor->5.60;
	
	
	pt->valor=5.60;
	
	
	pt->5.60;
	
	Gabarito
Coment.
	
	
	
	 
		
	
		7.
		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  20  20 10 20
	
	
	30  30  21  10   20
	
	
	30  20  0   30 21
	
	
	30  21  21  10  20
	
	
	30  30  21  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
	
	
	
	 
		
	
		8.
		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 incremento da variável inicio
	
	
	Antes da inserção deve-se fazer o incremento da variável final
	
	
	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 decremento da variável final

Outros materiais

Materiais relacionados

Perguntas relacionadas

Perguntas Recentes