Buscar

ESTRUTURA DE DADOS

Prévia do material em texto

ESTRUTURA DE DADOS
8a aula
		
	 
	Lupa
	 
	 
	
	
PPT
	
MP3
	 
		Exercício: CCT0826_
	17/05/2020
	Aluno(a): 
	2020.1 EAD
	Disciplina: CCT0826 - ESTRUTURA DE DADOS 
	28
	
	 
	
	 1a Questão
	
	
	
	
	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 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.
	 
	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 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.
	Respondido em 17/05/2020 00:28:25
	
	
	 
	
	 2a Questão
	
	
	
	
	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
	 
	salario=5000.00;
	
	pont->empregado->salario=5000.00;
	
	pont.salario=5000.00;
	Respondido em 17/05/2020 00:28:55
	
Explicação:
Criar a entrada:
salario=5000.00;
	
	
	 
	
	 3a Questão
	
	
	
	
	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.
	
	as afirmações ii e iv estão corretas.
	
	somente a afirmação iv esta correta.
	Respondido em 17/05/2020 00:29:45
	
	
	 
	
	 4a Questão
	
	
	
	
	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.
		
	 
	II e V estão corretas
	
	Somente a II está correta
	
	I IV e V estão corretas
	
	IV e V estão corretas
	
	I, II e IV estão corretas
	Respondido em 17/05/2020 00:30:51
	
	
	Gabarito
Coment.
	
	 
	
	 5a Questão
	
	
	
	
	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.
	
	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.
	
	É correto afirmar que a alocação dinâmica de memória sempre leva a programas mais rápidos.
	Respondido em 17/05/2020 00:30:55
	
	
	 
	
	 6a Questão
	
	
	
	
	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 onde houver o valor NULL
	
	Colocar o valor NULL em todos os ponteiros
	 
	Posicionar o ponteiro no início da lista
	
	Posicionar o ponteiro no meio da lista
	Respondido em 17/05/2020 00:31:38
	
	
	Gabarito
Coment.
	
	 
	
	 7a Questão
	
	
	
	
	Sobre listas encadeadas, é INCORRETO afirmar que:
		
	
	são acessadas pelo primeiro nodo da lista;
	
	o final da lista faz uma referência para NULL;
	 
	possuem tamanho fixo;
	
	pilhas e filas são versões limitadas de listas encadeadas, pois as inserções e remoções não ocorrem em qualquer parte.
	
	a memória é alocada dinamicamente;
	Respondido em 17/05/2020 00:31:48
	
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.
	
	
	 
	
	 8a Questão
	
	
	
	
	Qual o valor de x no final do programa? int main() { int x, *p, y; x = 2; p = &x; y = *p; y = 5; (*p)++; (*p) = (*p) - y; return(0); }
		
	
	5
	
	8
	
	Nenhuma das anteriores. O programa possui um erro de sintaxe.
	
	2
	 
	-2
	Respondido em 17/05/2020 00:32:06
	
Explicação:
Analisando passo a passo : 
int main() {
int x, *p, y;
x = 2;
p = &x;   // p aponta para x, sendo que x recebeu 2
y = *p;   //y recebeu o conteúdo da área apontada por p, ou seja, y recebeu *p que é 2
y = 5;   //y recebeu 5
(*p)++;  //A área apontada por p recebeu 3 Ou seja, x recebeu 3
(*p) = (*p) - y;   //*p, que é x recebeu 3 - 5. Ou seja, *p recebeu -2
return(0);
}
Como p aponta para x e *p recebeu -2, então x recebeu -2

Continue navegando

Outros materiais