Baixe o app para aproveitar ainda mais
Prévia do material em texto
19/10/2020 EPS https://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881789116&cod_hist_prova=194391624&pag_voltar=otacka 1/6 ESTRUTURA DE DADOS 8a aula Lupa Exercício: CCT0637_EX_A8_201804002917_V3 19/05/2020 Aluno(a): PAULO GIOVANE PASSOS DA SILVA Disciplina: CCT0637 - ESTRUTURA DE DADOS 201804002917 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.chave = 5; no->proximo = new tno; no->chave = new int; no->proximo = -10; no.proximo = no; Respondido em 19/05/2020 22:02:45 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 alocada com new, como foi o caso. Questão1 https://simulado.estacio.br/alunos/inicio.asp javascript:voltar(); javascript:diminui(); javascript:aumenta(); 19/10/2020 EPS https://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881789116&cod_hist_prova=194391624&pag_voltar=otacka 2/6 no.proximo = no; >> Incorreto porque não pode se pode usar o ponto para acessar campo de struct apontada pelo ponteiro no. Sobre listas simplesmente encadeadas, é INCORRETO afirmar que : podem implementar pilha e fila dinâmicas os nós da lista são alocados dinamicamente. possuem tamanho fixo são acessadas através de um ponteiro para o primeiro nó da lista o ponteiro do último nó é NULL Respondido em 19/05/2020 22:03:10 Explicação: Por definição, uma lista encadeada não tem tamanho pré-definido, pois os nós da lista são alocados em tempo de execução, de acordo com a demanda. 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.placa; p = p.link; } Questão2 Questão3 19/10/2020 EPS https://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881789116&cod_hist_prova=194391624&pag_voltar=otacka 3/6 } void imprimir(no *p) { if (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; } } Respondido em 19/05/2020 22:02:56 Gabarito Comentado 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 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 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. Respondido em 19/05/2020 22:03:01 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 é totalmente alocada após o inicio de sua execução Questão4 Questão5 19/10/2020 EPS https://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881789116&cod_hist_prova=194391624&pag_voltar=otacka 4/6 Toda a memória utilizada pela aplicação não muda durante toda a 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 Respondido em 19/05/2020 22:03:22 Gabarito Comentado Uma estrutura de dados pode ser Estática ou Dinâmica. No primeiro caso os limites são: Determinados pelos ponteiros Determinados pela memória Indeterminados Determinados pelo problema em que serão utilizados Determinados pelo usuário Respondido em 19/05/2020 22:03:26 Explicação: Em uma estrutura estática o espaço em memória é definido antes da execução e será definido pelas características do problema. Não é indeterminado, não temos que usar ponteiros, não é determinado pelo usuário ou pela memória. Quando a alocação é dinâmica, o espaço em memória é definido durante a execução do programa e assim, não podemos determinar previamente o quanto de memória será alocada. 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: Questão6 Questão7 19/10/2020 EPS https://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881789116&cod_hist_prova=194391624&pag_voltar=otacka 5/6 9 100 200 200 9 100 100 9 200 9 9 200 100 100 200 Respondido em 19/05/2020 22:03:16 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 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 �po Paciente e a lista é do �po 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) { List *novo = new List; Paciente pat; novo->p = pat; novo->link = i; return novo; Questão819/10/2020 EPS https://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881789116&cod_hist_prova=194391624&pag_voltar=otacka 6/6 } 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 ; 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; } Respondido em 19/05/2020 22:03:23 Gabarito Comentado javascript:abre_colabore('38403','194391624','3881789116');
Compartilhar