Baixe o app para aproveitar ainda mais
Prévia do material em texto
Fechar Avaliação: CCT0174_AVS_201107084611 » ESTRUTURA DE DADOS Tipo de Avaliação: AVS Aluno: MAURO SCERNI LASSANCE MAYA Professor: SERGIO DE OLIVEIRA SANTOS Turma: 9001/AA Nota da Prova: 4,0 Nota de Partic.: 1 Data: 02/07/2015 09:10:22 1a Questão (Ref.: 201107151636) Pontos: 1,5 / 1,5 Como é a lógica do FIFO? Resposta: O primeiro dado que chega será o primeiro a ser processado, sendo caracterizado como uma fila. Gabarito: O primeiro que entra na fila é o primeiro que sai. 2a Questão (Ref.: 201107327631) Pontos: 0,0 / 1,5 Faça uma função em C++ para imprimir os dados de uma lista duplamente encadeada não vazia. Considere struct nodupla { int dado; struct *dlink, //ponteiro para o nó à direita *elink; //ponteiro para o nó à esquerda }; e o seguinte protótipo : void mostrar(nodupla *p); Considere que p aponta para o 1o. nó da lista à esquerda. Resposta: struct nodupla { int dado; struct *dlink, *elink; void mostrar(nodupla *p); }; Gabarito: void mostrar(nodupla *p) { while (p != NULL) { cout << p->dado << " "; p = p->dlink; } } 3a Questão (Ref.: 201107323443) Pontos: 0,0 / 0,5 As estruturas de dados podem ser caracterizadas como sendo uma forma organizada de armazenar dados ou informações na memória, de modo a otimizar o acesso a estes. Muitas vezes existem algoritmos de manipulação dados associados a estas estruturas. Verifique as seguintes sentenças: I-Filas são estruturas que recuperam os dados na ordem direta em que estes foram armazenados. II-As Pilhas são estruturas que recuperam os dados na ordem reversa em que estes foram armazenados. III-As Pilhas são estruturas que recuperam os dados na ordem direta em que estes foram armazenados. IV-As Filas são estruturas que recuperam os dados na ordem reversa em que estes foram armazenados. Marque a alternativa CORRETA: As alternativas II e IV estão corretas. As alternativas I e III estão corretas. Todas as alternativas estão corretas. As alternativas III e IV estão corretas. As alternativas I e II estão corretas 4a Questão (Ref.: 201107112735) Pontos: 0,5 / 0,5 Assinale a alternativa que apresenta duas formas de passagem de parâmetros para uma rotina ou função: Por memória e por disco. Por reforço e por referência. Por valor e por referência Por teste e por reforço. Por inferência e por valor. 5a Questão (Ref.: 201107121006) Pontos: 0,5 / 0,5 Sobre o funcionamento da busca binária, é correto afirmar que dividindo seu vetor em duas metades. Se o item for menor que o item que está na metade do vetor, procure na segunda metade, ou seja, a da direita. Se o item for igual ao item que está na metade do vetor, o item foi encontrado. Se o item for menor que o item que está na metade do vetor, o item foi encontrado. Se o item for maior que o item que está na metade do vetor procure na primeira metade, ou seja, a da direita. Se o item for igual ao item que está na metade do vetor, o item não foi encontrado. 6a Questão (Ref.: 201107120852) Pontos: 0,0 / 0,5 Marque a afirmativa correta para a "inserção incremental". A técnica é boa quando os dados ficam uniformemente distribuídos entre os seus compartimentos. É um tipo de sequenciação por intercalação. Consiste em adicionar um valor no vetor, mantendo a ordem existente e ajustando o total de elementos. Os pivôs são escolhidos aleatoriamente. É um tipo de ordenação por intercalação 7a Questão (Ref.: 201107188311) Pontos: 0,5 / 0,5 Quando as inserções e as remoções ocorrem sempre no mesmo lado da lista, trata-se de uma estrutura de dados denominada. Fila. Vetor. Lista encadeada. Lista circular. Pilha. 8a Questão (Ref.: 201107325966) Pontos: 0,0 / 0,5 Considere uma pilha sequencial P com capacidade para n elementos. Sabendo que P é do tipo Pilha definido a seguir, marque a opção que corretamente implementa a operação de empilhamento, considerando que o topo da pilha recebeu -1 na inicialização. struct Pilha { int v[n], topo; }; void empilhar(Pilha P, int valor) { if (P.topo == n) cout << "Pilha cheia."; else { P.topo++; P.v[P.topo] = valor; } } void empilhar(Pilha &P, int valor) { if (P.topo == n - 1) cout << "Pilha cheia."; else { P.topo++; P.v[P.topo] = valor; } } void empilhar(Pilha &P, int valor) { if (topo == n - 1) cout << "Pilha cheia."; else { topo++; v[topo] = valor; } } void empilhar(Pilha &P, int valor) { if (P.topo == n - 1) cout << "Pilha cheia."; else P.v[P.topo] = valor; } void empilhar(Pilha P, int valor) { if (P.topo == n - 1) cout << "Pilha cheia."; else { P.topo++; P.v[P.topo] = valor; } } 9a Questão (Ref.: 201107121219) Pontos: 1,0 / 1,0 Em programação podemos utilizar um recurso que modulariza o programa chamado função. As funções precisam ser ativadas para que possam ser executadas. Para isso, é necessário chamar a função pelo seu nome e enviar, quando necessário, os valores respectivos para os parâmetros de entrada. Ao enviar os valores para os parâmetros de entrada, o programa pode fazer uma cópia deste valor ou trabalhar em um endereço enviado. Quando se envia o endereço estamos ativando a função por meio de: Envio de inteiro. Passagem por valor. Ponteiros. Registro. Envio de valor. 10a Questão (Ref.: 201107120645) Pontos: 0,0 / 1,0 Um apontador é uma variável que contém o endereço de outra variável. Apontadores são muito usados, em parte porque são, às vezes, a única forma de se expressar um processo de computação e, em parte, porque, normalmente, implicam um código mais compacto e eficiente que o obtido de outras formas. Considerando o uso de apontadores nas linguagens procedurais atuais, julgue os itens que se seguem com E se for errado e C se for certo. ( ) O uso de apontadores como argumentos de funções que realizem chamada por valor não permite alteração de seus conteúdos de memória na função. ( ) Com apontadores, é possível criar funções que retornem estruturas de dados complexas. ( ) Para recuperar o valor da variável apontada, basta que o apontador seja atribuído a uma variável de mesmo tipo. ( ) Arranjos de apontadores podem ser usados em funções que recebam como argumentos um número variável de cadeias de caracteres. ( ) Em geral, para que um arranjo seja percorrido por um ponteiro, para cada elemento do arranjo deve-se adicionar ao ponteiro o número de bytes que o elemento ocupa em memória. b) C - C - E - E - E c) E - E - C - C - E e) C - E - C - E - C a) E - C - E - C - E d) E - C - E - C - C
Compartilhar