Baixe o app para aproveitar ainda mais
Prévia do material em texto
1. 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 ii e iv estão corretas. as afirmações i e ii estão corretas. somente a afirmação iv esta correta. 2. 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. I IV e V estão corretas II e V estão corretas IV e V estão corretas Somente a II está correta I, II e IV estão corretas Gabarito Comentado 3. Em uma aplicação que usa processos de alocação estática e dinâmica de memória é correto afirmar que Todas as afirmações acima são incorretas Apenas a memória associada às variáveis do tipo vetor é alocada após o inicio da execução da aplicação 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 Gabarito Comentado 4. 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 no início da lista Posicionar o ponteiro no meio da lista Colocar o valor NULL em todos os ponteiros Posicionar o ponteiro onde houver o valor NULL Gabarito Comentado 5. Para simular uma lista encadeada simplesmente pode se utilizar as estruturas de ponteiros. Como pode ser definida uma estrutura do tipo ponteiro? Um objeto que contém um endereço de memória. Uma estrutura que aponta para um objeto de arquivo. Um objeto que não contém endereço de memória. Uma estrutura utilizada apontar erros de operações. Um objeto que armazena dado diretamente na memória. Gabarito Comentado 6. 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 limites para o crescimento da minha lista, como posso implementar a inserção de um novo cliente na lista, sabendo que cada cliente é do tipo Cliente e a lista é do tipo 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[]; novo[0].c = cl; novo[0].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) { 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; } Gabarito Comentado 7. 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->5.60; pt.valor->5.60; pt->valor=5.60; pt->próximo.valor=5.60; pt->próximo->valor=5.60; Gabarito Comentado 8. Marque a afirmativa que represente uma concatenação em listas. Alterar a ordem dos dados da lista do final para o início, atualizando a lista. 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. Organizar os dados da lista em ordem crescente ou decrescente. Consiste em dividir a lista em duas outras listas. A quantidade de nós que cada lista terá, depende da necessidade. Gabarito Comentado
Compartilhar