Baixe o app para aproveitar ainda mais
Prévia do material em texto
ESTRUTURA DE DADOS 5a aula Lupa Vídeo PPT MP3 Exercício: CCT0753_EX_A5_201709084006_V1 31/05/2018 18:57:51 (Finalizada) Aluno(a): WELLYNGTON ORTIZ 2018.1 - F Disciplina: CCT0753 - ESTRUTURA DE DADOS 201709084006 Ref.: 201709684244 1a Questão __________________________ é uma lista linear em que a alocação de memória pode ser estática, e que a forma de armazenamento é contígua ou sequencial na memória. Usamos este tipo de lista quando se tem em mente um tamanho pré-definido, ou seja, quando se sabe até onde a lista pode crescer. Lista Linear de Alocação de Memória Lista Linear Não Sequencial Lista Linear Não Alocada Lista Linear Sequencial Lista Não Linear Ref.: 201709768063 2a Questão Considere uma lista com n livros, em que cada livro é modelado pela struct : struct Livro { string titulo, editora, autor; float preco; }; A função X abaixo void X (Livro v[ ], int &n, Livro L) { v[n] = L; n++; cout << "Operação realizada com sucesso."; } implementa a operação de : Busca Substituição Inicialização Inserção Ordenação por inserção Ref.: 201709322794 3a Questão As estruturas de dados são utilizadas para manter dados ou informações organizados na memória, o que possibilita a otimização do uso destes dados. Porém, as estruturas guardam características especiais na manipulação destes dados, assim deve-se escolher a estrutura certa ou mais adequada para uma determinada aplicação. Portanto marque a opção que representa a melhor estrutura, quando se tem como requisitos principais o acesso aleatório aos dados e alocação destes de forma contínua na memória. Pilha Encadeada Lista Sequencial Lista Encadeada Pilha Sequencial Fila Sequencial Ref.: 201710175704 4a Questão Analise a função abaixo, considerando o tipo Livro e marque a opção correta. int R2D2 (Livro v[ ], int c, int n) { for (int i = 0; i < n; i++) if (v[i].codigo == c) return i; return -1; } onde struct Livro { int codigo; char autor[30]; }; Retorna -1 se o valor de c estiver em v. Retorna a posição do valor c em v , se o valor c for encontrado em v. Retorna o valor de c se o valor n foi encontrado. Ocorre erro na função R2D2 se o valor de c não estiver sido encontrado em v. Retorna -1 se o valor de n foi encontrado. Explicação: Questão objetiva. A função realiza uma busca sequencial. A cada rodada do loop é verificado se o código de v[i] é igual ao valor de c, passado como parâmetro. Se o código estiver em v[i], então a posição i é retornada. Se o teste do if nunca tiver sucesso, então, sairemos do for sem sucesso e ao final, será retornado -1, que não pode ser índice ou posição de qualquer valor no vetor. Ref.: 201709120377 5a Questão Com relação as listas lineares sequenciais: I - Uma lista linear sequencial é um vetor em linguagens estruturadas, também chamado de array. II - Um elemento de uma lista linear sequencial pode ser acessado diretamente através de um índice. III - Uma lista linear sequencial pode ter elementos de um mesmo tipo, ou de tipos diferentes. Apenas as afirmações I e II estão corretas. Apenas as afirmações II e III estão corretas. Apenas a afirmação I está correta. Apenas as afirmações I e III estão corretas. Apenas as afirmações II está corretas. Ref.: 201709325278 6a Questão for (int i = 0; i < n; i++) cout << L.matricula[i] << " " << L.nome[i] << endl; for (int i = 0; i < n; i++) cout << L.matricula << " " << L.nome << endl; for (int i = 0; i < n; i++) cout << L[i] << endl; for (int i = 0; i < n; i++) cout << L[i].matricula << " " << L[i].nome[30] << endl; for (int i = 0; i < n; i++) cout << L[i].matricula << " " << L[i].nome << endl; Ref.: 201709187656 7a Questão São métodos ou algoritmos conhecidos de ordenação de dados por troca: ordenação shell e hashing. bubble sort e quicksort. hashing e bubble sort. quicksort e hashing. busca por ordenação e ordenação shell. Explicação: Bubble sort é o algoritmo mais simples, mas o menos eficientes. Neste algoritmo cada elemento da posição i será comparado com o elemento da posição i + 1, ou seja, um elemento da posição 2 será comparado com o elemento da posição 3. Caso o elemento da posição 2 for maior que o da posição 3, eles trocam de lugar e assim sucessivamente. Por causa dessa forma de execução, o vetor terá que ser percorrido quantas vezes que for necessária, tornando o algoritmo ineficiente para listas muito grandes. O Quicksort é o algoritmo mais eficiente na ordenação por comparação. Nele se escolhe um elemento chamado de pivô, a partir disto é organizada a lista para que todos os números anteriores a ele sejam menores que ele, e todos os números posteriores a ele sejam maiores que ele. Ao final desse processo o número pivô já está em sua posição final. Os dois grupos desordenados recursivamente sofreram o mesmo processo até que a lista esteja ordenada. Ref.: 201710242770 8a Questão Considere as seguintes afirmações: I. Só podemos ter uma matriz de no máximo duas dimensões. Exemplo: C[100][100]. II. Ao declararmos um vetor int A[10], se escrevemos A[2] acessamos o segundo elemento do vetor. III. Uma string declarada como char B[30] armazena no máximo 30 caracteres. Escolha a alternativa correta: Estão corretas apenas as afirmativas I e III. Está correta apenas a afirmativa I. Nenhuma afirmação está correta. Está correta apenas a afirmativa II. Estão corretas apenas as afirmativas I e II. Explicação: Analisando cada afirmativa : I. Só podemos ter uma matriz de no máximo duas dimensões. Exemplo: C[100][100]. Falso. Podemos ter matrizes unidimensionais, tridimensionais, etc... II. Ao declararmos um vetor int A[10], se escrevemos A[2] acessamos o segundo elemento do vetor. Falso. Em C++ o índice inicial é zero. Logo, A[2] é o elemento de índice 2, ou seja, o 3o. elemento do vetor. III. Uma string declarada como char B[30] armazena no máximo 30 caracteres. Escolha a alternativa correta: Falso. B pode armazenar no máximo 29 caracteres que sejam dados, pois existe uma área para o caracter nulo. Logo, todas as opções são falsas.
Compartilhar