Prévia do material em texto
CCT0753_EX_A8_201703294742_V8
ESTRUTURA DE DADOS 8a aula
Lupa
Vídeo
PPT
MP3
Exercício: CCT0753_EX_A8_201703294742_V8 24/06/2018 17:51:53 (Finalizada)
Aluno(a): RICARDO ALEXANDRE KEMMERICH
Disciplina: CCT0753 - ESTRUTURA DE DADOS 201703294742
Ref.: 201704474616
1a Questão
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 a afirmação I está correta.
Apenas as afirmações II e III estão corretas.
As afirmações I, II e III estão corretas.
Apenas a afirmação II 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.
Ref.: 201703591337
2a Questão
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
File failed to load: http://simulado.estacio.br/ckeditor/MathJax/a11y/accessibility-menu.js
limites para o crescimento da minha lista, como posso implementar a inserção de um novo cliente na lista, sabendo que cada cliente é do �po Cliente e
a lista é do �po 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) {
Lista *novo = new Lista;
Cliente cl;
novo->c = cl;
novo->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;
}
Lista insereCliente(Lista *p, Cliente cl)
File failed to load: http://simulado.estacio.br/ckeditor/MathJax/a11y/accessibility-menu.js
{
Lista novo[];
novo[0].c = cl;
novo[0].link = p;
return novo;
}
Ref.: 201703974732
3a Questão
Em uma aplicação que usa apenas o processo de alocação estática de memória é correto afirmar que:
Apenas a memória associada às variáveis do tipo vetor é alocada após o inicio da execução da aplicação
Todas as afirmações acima são incorretas
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
A memória utilizada pela aplicação é inicialmente estática, mas pode mudar
Ref.: 201703999742
4a Questão
Admita a seguinte estrutura de nó de uma lista simplesmente encadeada: struct tno { int chave; tno *proximo; };
Admita, agora, a seguinte declaração de uma variável do tipo nó: tno *no; Qual das alternativas a seguir traz uma
operação válida sobre essa variável?
no->proximo = -10;
no->proximo = new tno;
no.proximo = no;
no->chave = new int;
no.chave = 5;
Explicação:
Analisando cada item :
no.chave = 5;
>> Como no é ponteiro então temos que usar a seta para acessar os campos da
área apontada por no.
no->proximo = -10;
>> O campo proximo é de ponteiro então não pode receber inteiro.
no->chave = new int;
>> O campo chave é de inteiro então não deve receber endereço de inteiro. O
operador new aloca memória e retorna o endereço da área alocada.
no->proximo = new tno;
>> É correto porque o campo proximo é campo de ponteiro e pode receber
outro ponteiro, pode receber NULL ou pode receber endereço da área alocadaFile failed to load: http://simulado.estacio.br/ckeditor/MathJax/a11y/accessibility-menu.js
com new, como foi o caso.
no.proximo = no;
>> Incorreto porque não pode se pode usar o ponto para acessar campo de
struct apontada pelo ponteiro no.
Ref.: 201703554623
5a Questão
Seja uma lista encadeada cujo nodo é representado por:
struct nodo{
int valor;
nodo prox;
};
Esta estrutura possui um ponteiro de referência que aponta sempre para o primeiro nodo da lista, sendo este
declarado como: nodo *lista;
Numa lista encadeada seu último nodo possui o campo prox sempre igual a NULL. Marque a opção que representa o
trecho de código onde um ponteiro auxiliar é capaz de percorre a lista até seu último nodo:
nodo *aux=lista;
while(lista->prox)aux=aux->prox;
nodo *aux=lista;
while(aux->prox)aux->prox=aux->prox;
nodo *aux=lista;
while(aux->prox)aux=aux->prox;
nodo *aux=lista;
while(aux)aux->prox=aux;
nodo *lista=aux;
while(aux->prox)aux=aux->prox;
Explicação:
nodo *aux=lista;
while(aux->prox)aux=aux->prox;
Ref.: 201703592206
6a Questão
As variáveis são na verdade trecho de memórias que armazenam dados de
diversas naturezas, portanto sempre que declara-se uma variável, na linguagem
C++, é necessário informar o tipo de dado que esta irá armazenar. Um tipo
especial de variáveis são os ponteiros, isto é, variáveis que armazenam apenas
os endereços de outras variáveis. Assim os ponteiros são usados para que se
possa acessar de forma indireta uma outra variável. Sabendo-se disto e supondo
que o endereço na memória da variável "a" é 100 e o endereço da memória da
variável ponteiro é 200, analise o trecho de código abaixo e marque a alternativa
que representa a saída do programa:
File failed to load: http://simulado.estacio.br/ckeditor/MathJax/a11y/accessibility-menu.js
100 9 200
9 9 200
100 100 200
200 9 100
9 100 200
Explicação:
100 ===> endereço da memória da variável a
9 ===> valor da variável a
200 ===> endereço da memória da variável ponteiro
Ref.: 201703965904
7a Questão
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.valor->5.60;
pt->valor=5.60;
pt->5.60;
pt->próximo.valor=5.60;
pt->próximo->valor=5.60;
Ref.: 201703352009
8a Questão
Em uma lista linear simplesmente encadeada.
O ponteiro do "último" nó não é NULL, mas sim aponta de volta para o "primeiro" 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.
Além do campo relativo ao dado, cada nó possui dois ponteiros,
Cada nó possui um só ponteiro que referencia o próximo nó da lista.
Cada ponteiro possui um só endereço que referencia o primeiro nó da lista.
File failed to load: http://simulado.estacio.br/ckeditor/MathJax/a11y/accessibility-menu.js
File failed to load: http://simulado.estacio.br/ckeditor/MathJax/a11y/accessibility-menu.js