Baixe o app para aproveitar ainda mais
Prévia do material em texto
06/10/2020 EPS https://simulado.estacio.br/alunos/?user_cod=2063030&matr_integracao=201803260271 1/6 ESTRUTURA DE DADOS 8a aula Lupa Exercício: CCT0826_EX_A8_201803260271_V4 10/09/2020 Aluno(a): DANIELLE GALVÃO SALDANHA 2020.3 EAD Disciplina: CCT0826 - ESTRUTURA DE DADOS 201803260271 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. Somente a afirmativa i esta correta. Somente a afirmativa iii esta correta. Somente as afirmativas i e ii estão corretas. Todas as afirmativas estão corretas. Todas as afirmativas estão incorretas. Respondido em 10/09/2020 00:41:58 Gabarito Comentado Tei Ping , famosa cabeleireira das estrelas, possui uma lista não ordenada de clientes em que registra apenas o nome, endereço e o telefone de cada cliente. Como não se pode pré-definir um limite para o tamanho da lista, como se pode implementar a inserção de um novo cliente na lista ? Sabe-se que cada cliente é do �po Cliente e a lista é do �po List assim definidos : struct Cliente { long int matricula; string nome, endereco e tel; }; struct List { Cliente p; struct List *link; }; Questão1 Questão2 https://simulado.estacio.br/alunos/inicio.asp javascript:voltar(); javascript:diminui(); javascript:aumenta(); 06/10/2020 EPS https://simulado.estacio.br/alunos/?user_cod=2063030&matr_integracao=201803260271 2/6 List * insereCliente(List *i, Cliente c){ List *novo ; novo->p = c; novo->link = i; return novo; } List * insereCliente(List *i) { List *novo = new List; Cliente c; novo->p = c; novo->link = i; return novo; } List * insereCliente(List *i, Cliente c) { List *novo = new List; novo.p = c; novo.link = i; return novo; } List * insereCliente(List *i, Cliente c) { List *novo = new List; novo->p = c; novo->link =i; return novo; } List insereCliente(List *i, Cliente c) { List novo[]; novo[0].p = c; novo[0].link = i; return novo; } Respondido em 10/09/2020 00:39:27 Explicação: Analisando a resposta certa : List * insereCliente(List *i, Cliente c) 06/10/2020 EPS https://simulado.estacio.br/alunos/?user_cod=2063030&matr_integracao=201803260271 3/6 { List *novo = new List; //aloca memória para novo nó novo->p = c; //acessa o campo p da área apontada por novo e atribui o cliente c ao campo p novo->link =i; //faz o link do novo nó apontar para onde i está apontando return novo; //retorna o endereço do novo nó } Logo, esta função insere um novo nó no início de uma lista simplesmente encadeada e retorna o ponteiro para o início da lista resultante. Analisando as demais opções, que estão erradas : 2o. item .... Opção errada : faltou alocar memória 3o. item .... Opção errada : Cliente c não está definido. 4o. item .... Opção errada : Usa ponto quando deveria ser o operador seta 5o. item .... Opção errada : Muitos erros... Usa vetor sem definir tamanho e trabalha com o elemento de índice zero de novo, acessando os campos com ponto. 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 Invertida Duplamente Encadeada Binária Encadeada Circular Balanceada Respondido em 10/09/2020 00:41:35 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. 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 pt) { List *novo = new List; novo->p = pt; Questão3 Questão4 06/10/2020 EPS https://simulado.estacio.br/alunos/?user_cod=2063030&matr_integracao=201803260271 4/6 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 * inserePac(List *i, Paciente pt){ List *novo ; novo->p = pt; novo->link = i; return novo; } List insereCliente(List *i, Paciente pac) { List novo[]; novo[0].p = pac; novo[0].link = i; return novo; } Respondido em 10/09/2020 00:41:18 Gabarito Comentado Uma estrutura de dados pode ser Estática ou Dinâmica. No primeiro caso os limites são: Determinados pelo problema em que serão utilizados Indeterminados Determinados pelo usuário Determinados pelos ponteiros Determinados pela memória Questão5 06/10/2020 EPS https://simulado.estacio.br/alunos/?user_cod=2063030&matr_integracao=201803260271 5/6 Respondido em 10/09/2020 00:41:05 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: 200 9 100 100 9 200 9 9 200 9 100 200 100 100 200 Respondido em 10/09/2020 00:40:50 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 Questão6 Questão7 06/10/2020 EPS https://simulado.estacio.br/alunos/?user_cod=2063030&matr_integracao=201803260271 6/6 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(aux->prox)aux=aux->prox; nodo *aux=lista; while(lista->prox)aux=aux->prox; nodo *aux=lista; while(aux)aux->prox=aux; nodo *lista=aux; while(aux->prox)aux=aux->prox; nodo *aux=lista; while(aux->prox)aux->prox=aux->prox; Respondido em 10/09/2020 00:40:40 Explicação: nodo *aux=lista; while(aux->prox)aux=aux->prox;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; salario=5000.00; pont.salario=5000.00; pont.empregado.salario=5000.00 pont.empregado->salario=5000.00; Respondido em 10/09/2020 00:40:31 Explicação: Criar a entrada: salario=5000.00; Questão8 javascript:abre_colabore('38403','204352264','4075048745');
Compartilhar