Baixe o app para aproveitar ainda mais
Prévia do material em texto
Em relação a estruturas de dados, avalie a correspondência existente entre as estruturas de dados Lineares e Não Lineares com suas respectivas coleções de dados. A correta associação entre os elementos das duas tabelas é: a1, b1, c2, d1 a1, b2, c1, d1. a2, b2, c1, d2. a2, b1, c2, d1. a1, b1, c2, d2. Gabarito Comentado 2a Questão (Ref.: 201609726488) Fórum de Dúvidas (1) Saiba (1) A forma correta para imprimir o valor do último elemento de um vetor v com n posições é: cout << v[n]; cout << v[n+1]; cout << v[ultimo]; cout << v[n-1]; cin >> v[-1]; 3a Questão (Ref.: 201609762420) Fórum de Dúvidas (1) Saiba (1) 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 de 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 I e II estão corretas Todas as alternativas estão corretas. As alternativas III e IV estão corretas. As alternativas II e IV estão corretas. As alternativas I e III estão corretas. 4a Questão (Ref.: 201609148523) Fórum de Dúvidas (1 de 1) Saiba (1 de 1) Podemos dizer que estrutura de dados é: O meio para armazenar e organizar dados com o objetivo de facilitar o acesso e as modificações. A entrada, que satisfaz a quaisquer restrições impostas pelo problema, necessária para se calcular uma solução do problema. É a saída, que satisfaz a quaisquer restrições impostas pelo problema, necessária para se calcular uma solução do problema. Uma sequência de passos computacionais que transforma uma entrada em uma saída previamente determinada. O que permite o armazenamento e a recuperação de dados independentemente de seu conteúdo. Gabarito Comentado 5a Questão (Ref.: 201609148530) Fórum de Dúvidas (1) Saiba (1) Estão entre algumas das possíveis formas de se estruturar dados: Grafos, lista ordenada, vetores. Grafos, lista ordenada, algoritmos. Grafos, algoritmos, fila. Lista encadeada, vetores, algoritmos. Algoritmos, lista ordenada, vetores. Gabarito Comentado 6a Questão (Ref.: 201609739791) Fórum de Dúvidas (1) Saiba (1) Os irmãos Silva irão viajar por vários países da Europa e por isso, traçaram no mapa o percurso que farão, de cidade a cidade. Qual a estrutura de dados mais adequada para modelar este problema ? Fila Árvore Pilha Lista Grafo 7a Questão (Ref.: 201609762448) Fórum de Dúvidas (1) Saiba (1) 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 Pilha Sequencial Lista Encadeada Fila Sequencial 8a Questão (Ref.: 201609148900) Fórum de Dúvidas (1 de 1) Saiba (1 de 1) As estruturas de dados são importantes para a programação porque facilitam a pesquisa, pois permitem a ordenação dos dados de forma crescente ou decrescente. Dessa forma, assinale a alternativa correta que define um tipo de dado estruturado. Podem armazenar apenas um valor de cada vez, se algum valor for atribuído o anterior é apagado. Permitem agregar mais do que um valor em uma variável, existindo uma relação estrutural entre seus elementos. Também são denominados tipos primitivos, não é possível decompor em partes menores. Consiste da definição do conjunto de valores (denominado domínio) que uma variável pode assumir ao longo da execução de um programa. São tipos de dados indivisíveis. As variáveis em programação são utilizadas para armazenar um valor de determinado tipo em um espaço reservado na memória. Em algumas linguagens de programação podemos declarar, ou seja, reservar um espaço na memória, fora do escopo da função principal, e fora do escopo de qualquer outra função. Ao fazer a declaração desta forma estamos declarando uma variável do tipo: Local Global Real Constante Inteiro Gabarito Comentado 2a Questão (Ref.: 201609388698) Fórum de Dúvidas (1) Saiba (1) O programa executa perfeitamente independente da ordem das funções já que existem os seus protótipos. O programa não executa corretamente pois as funções devem ser descritas antes da função main(), para que o compilador consiga reconhecê-las. O programa não executa corretamente, pois o protótipo da função media( ) não apresenta a identificação dos parâmetros, mas apenas os tipos dos mesmos. O programa não executa corretamente, pois os protótipos estão fora da ordem em que as funções são descritas. O programa executa perfeitamente, mas não mostra o valor da media já que esta função não foi chamada na função main( ). Gabarito Comentado 3a Questão (Ref.: 201609148914) Fórum de Dúvidas (1) Saiba (1) Com a utilização das estruturas de dados e seus tipos, em algumas situações é imprescindível a criação de funções que façam determinada verificação ou ação nestas estruturas. Dessa forma, analise a função abaixo e marque corretamente a alternativa que descreve as funcionalidades desta. int funcao(float v[], float vl, int n) { for (int i = 0; i < n; i++) if (v[i] == vl) return i; return -1; } Resulta em erro, se o valor de vl não estiver dentro de v. Retorna a posição de v se o valor vl foi encontrado. Retorna -1 se o valor de n foi encontrado. Retorna o valor de vl se o valor n foi encontrado.Retorna -1 se o valor de vl estiver dentro de v. Gabarito Comentado 4a Questão (Ref.: 201609762438) Fórum de Dúvidas (1) Saiba (1) Blocos únicos de códigos que realizam diversas tarefas distintas são de difícil manutenção. Portanto, utiliza-se a técnica da modularização de programas, a fim de facilitar a implementação e a manutenção dos programas. Esta técnica tem como principal elemento: As funções Os Vetores As Filas Os Grafos As Estruturas de Dados 5a Questão (Ref.: 201609148917) Fórum de Dúvidas (1 de 1) Saiba (1 de 1) 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 valor. Registro. Envio de inteiro. Passagem por valor. Ponteiros. Gabarito Comentado 6a Questão (Ref.: 201609712708) Fórum de Dúvidas (1 de 1) Saiba (1 de 1) Na passagem por ____________________ , o endereço da variável da função chamadora é passado para a função chamada e, dessa forma, o valor poderá ser alterado, ou não. número valor caracter void referência 7a Questão (Ref.: 201609737191) Fórum de Dúvidas (1) Saiba (1) Blocos únicos de códigos que realizam diversas tarefas distitintas são de dificil manutenção. Portanto, utiliza-se a tecnica da modularização de programas, a fim de facilitar a implementação e a manutenção dos programas. Esta técnica, também chamada de modularização, tem como principal elemento: As Estruturas de Dados Os Grafos As funções Os Vetores As Filas 8a Questão (Ref.: 201609731310) Fórum de Dúvidas (1 de 1) Saiba (1 de 1) Uma função possui um valor de retorno inteiro, recebe por valor um inteiro como primeiro parâmetro e por referência um inteiro como segundo parâmetro. Qual das respostas abaixo poderia representar o protótipo dessa função: void func (int &a, int &b); int func (&int, int); int func (int a, int &b); void func (int a, int &b); int func (int &a, int b); Qual das seguintes estruturas de dados é classificada como heterogênea? Vetor Loop Fila Pilha Registro Gabarito Comentado 2a Questão (Ref.: 201609788232) Fórum de Dúvidas (0) Saiba (0) Pode-se definir uma estrutura heterogênea como sendo um conjunto de elementos, geralmente, agrupados sob uma lógica e associados por um nome. Esses elementos podem ser variáveis simples, matrizes ou ainda outras estruturas. Seja a definição de uma estrutura como: struct aluno { string nome; float nota; }; Suponha ainda que exista um vetor desta estrutura, definido como: aluno vet [ 100]; Marque a alternativa em que é atribuída de forma correta a nota 5.7 para o décimo primeiro elemento deste vetor. vet[10]=aluno.5.7; aluno.vet[10].nota=5.7; vet[10].nota=5.7; aluno.vet[10]=5.7; vet[10].aluno.nota=5.7 ; 3a Questão (Ref.: 201609820482) Fórum de Dúvidas (0) Saiba (0) Marque a opção correta, considerando struct Livro { int codigo; float preco; } liv; Livro.codigo = 12345; liv.preco = 30.70; liv->preco = 30.70; Livro.liv.codigo = 12345; Livro->liv.codigo = 12345; 4a Questão (Ref.: 201609148885) Fórum de Dúvidas (0) Saiba (0) A armazenagem de dados pode ocorrer temporariamente em uma variável, um vetor ou em uma estrutura chamada Struct na linguagem C e C++. Como se procede a atribuição de valor a um determinado campo de uma estrutura do tipo Struct? Nome da estrutura vírgula tipo do campo Nome da estrutura ponto tipo do campo Nome da estrutura seta nome do campo Nome da estrutura seta tipo do campo Nome da estrutura ponto nome do campo Gabarito Comentado 5a Questão (Ref.: 201609353593) Fórum de Dúvidas (0) Saiba (0) Com relação à struct, é correto afirmar que : Cada elemento da struct é denominado membro ou campo, sendo que a struct pode armazenar elementos de tipos diferentes ou não. Não é possível criar um vetor de structs, pois o vetor trabalha apenas com dados do mesmo tipo. A struct é sempre definida dentro da main. Cada elemento da struct é chamado campo e cada campo deve ser, obrigatoriamente, de um tipo de dados distinto de outro campo. Cada elemento da struct é chamado componente. Gabarito Comentado 6a Questão (Ref.: 201609718754) Fórum de Dúvidas (0) Saiba (0) Pode-se definir uma estrutura heterogênea como sendo um conjunto de elementos, geralmente, agrupados sob uma lógica e associados por um nome. Esses elementos podem ser variáveis simples, matrizes ou ainda outras estruturas. Seja a definição de uma estrutura como: struct aluno { string nome; float media; }; Suponha ainda que exista um vetor desta estrutura, definido como: aluno vet [ 10]; Marque a alternativa em que é atribuída de forma correta a media 6.0 para o quarto elemento deste vetor. vet[3].aluno=6.0; aluno[3].media=6.0; aluno[3].10=6.0; aluno[10]=6.0; vet[3].media=6.0; 7a Questão (Ref.: 201609762443) Fórum de Dúvidas (0) Saiba (0) Pode-se definir uma estrutura heterogênea como sendo um conjunto de elementos, geralmente, agrupados sob uma lógica e associados por um nome. Esses elementos podem ser variáveis simples, matrizes ou ainda outras estruturas. Seja a definição de uma estrutura como: struct aluno { string nome; float nota; }; Suponha ainda que exista um vetor desta estrutura, definido como: aluno vet [100]; Marque a alternativa em que é atribuídade forma correta a nota 5.7 para o décimo primeiro elemento deste vetor. vet[10]=aluno.5.7; aluno.vet[10].nota=5.7; vet[10].aluno.nota=5.7 ; aluno.vet[10]=5.7; vet[10].nota=5.7; Seja a seguinte função de ordenação: void ordena( int n, int v[]) { int i, j, x; for (j = 1; j < n; ++j) { x = v[j]; for (i = j-1; i >= 0 && v[i] > x; --i) v[i+1] = v[i]; v[i+1] = x; } } Pode-se dizer que é uma função de ordenação: Que utiliza o método inserção e realiza uma ordenação decrescente nos elementos do vetor v. Que utiliza o método bolha e realiza uma ordenação crescente nos elementos do vetor v. Que utiliza o método seleção e realiza uma ordenação decrescente nos elementos do vetor v. Que utiliza o método inserção e realiza uma ordenação crescente nos elementos do vetor v. Que utiliza o método seleção e realiza uma ordenação crescente nos elementos do vetor v. 2a Questão (Ref.: 201609734011) Fórum de Dúvidas (1 de 1) Saiba (0) Em relação à classificação do método de ordenação, assinale abaixo aquele que, durante o processo de ordenação, só usa a memória principal: Ordenação Eficiente Ordenação Simples Ordenação Simples Externa Ordenação Interna Ordenação Externa Gabarito Comentado Gabarito Comentado Gabarito Comentado 3a Questão (Ref.: 201609151950) Fórum de Dúvidas (1) Saiba (0) Existem vários algoritmos de busca em estruturas de dados, um destes realiza a busca em vetores, e requer acesso aleatório aos elementos desta estrutura e parte do pressuposto de que os dados do vetor estejam ordenados e utiliza a técnica de divisão e conquista comparando o elemento desejado com o elemento do meio do vetor. Esta técnica ainda verifica se o elemento do meio do vetor for o desejado, a busca termina. Caso contrário, se o elemento do meio vier antes do elemento buscado, então a busca continua na metade posterior do vetor. E se o elemento do meio vier depois da chave, a busca continua na metade anterior do vetor. O algoritmo que utiliza esta metodologia é: Pesquisa binária Pesquisa sequencial Bolha Inserção Seleção Gabarito Comentado 4a Questão (Ref.: 201609737182) Fórum de Dúvidas (1 de 1) Saiba (0) Sabendo-se que o método de ordenção bolha ou bubble sort realiza a troca de elementos adjacentes até que todos os elementos de um vetor esteja ordenado. Então, se submetermos a sequencia de inteiros armazenada em um vetor inicialmente na seguinte ordem : 4, 2, 5, 1. Pode-se dizer que quando o maior elemento do vetor alcançar sua posição final, a ordenação apresentada no vetor é: 2,1,4,5 1,4,2,5 2,4,1,5 4,1,2,5 1,2,4,5 Gabarito Comentado 5a Questão (Ref.: 201609148387) Fórum de Dúvidas (1 de 1) Saiba (0) O seguinte trecho de programa abaixo representa qual tipo de estrutura de ordenação? void ordenar(float v[], int n) // n é o no. de elementos em v { int i , // índice aux, // auxiliar para troca trocou = true, fim = n - 1; while (trocou) { trocou = false; // sinaliza que é falso que trocou for (i = 0; i < fim; i++) { if (v[i] > v[i+1]) { aux = v[i]; v[i] = v[i+1]; v[i+1] = aux; // sinaliza que é verdadeiro que trocou trocou = true; } // fim if } // fim for fim--; // decrementa o fim } // fim while } // fim da função Shellsort Heapsort Quicksort Mergesort Bublesort Gabarito Comentado 6a Questão (Ref.: 201609148550) Fórum de Dúvidas (1 de 1) Saiba (0) Marque a afirmativa correta para a "inserção incremental". Os pivôs são escolhidos aleatoriamente. A técnica é boa quando os dados ficam uniformemente distribuídos entre os seus compartimentos. É um tipo de ordenação por intercalação Consiste em adicionar um valor no vetor, mantendo a ordem existente e ajustando o total de elementos. É um tipo de sequenciação por intercalação. Gabarito Comentado 7a Questão (Ref.: 201609148893) Fórum de Dúvidas (1 de 1) Saiba (0) O processo de rearranjar um conjunto de dados em uma ordem crescente ou decrescente é chamado de ordenação. Existem várias técnicas de ordenação, entretanto a técnica que procura o menor valor entre todos os elementos do vetor e troca-o pelo primeiro elemento; para os n - 1 elementos restantes, determinação do elemento de menor valor e troca pelo segundo elemento e assim sucessivamente, é chamado de: Seleção Binária Inserção Bolha Hash Gabarito Comentado 8a Questão (Ref.: 201609151954) Fórum de Dúvidas (1 de 1) Saiba (0) Existem vários tipos de algoritmos para realizar a ordenação dos elementos, onde um algoritmo de ordenação deve rearranjar o vetor de forma a estabelecer uma ordem entre os elementos. Marque a alternativa correta que cita o algoritmo cuja descrição é: "considera cada elemento uma vez inserindo-o em seu lugar correto entre os elementos que já estão em ordem". E o seu passo a passo pode ser descrito como: "o elemento é inserido entre os ordenados movendo-se os elementos maiores que ele uma posição para a direita e posteriormente inserindo-o na posição vaga". Inserção Seleção Bolha QuickSort MergeSort __________________________ é 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 Não Linear Lista Linear Sequencial Lista Linear Não Sequencial Lista Linear de Alocação de Memória Lista Linear Não Alocada 2a Questão (Ref.: 201609148884) Fórum de Dúvidas (0) Saiba (0) As estruturas de dados em programação são muito utilizadas para tornar o acesso aos dados mais eficiente e organizado. A estrutura de dados considerada mais simples e tem como característica apresentar apenas uma dimensão é: Variável Registro Vetor Matriz Função GabaritoComentado 3a Questão (Ref.: 201609140451) Fórum de Dúvidas (0) Saiba (0) Um órgão público adotou dois sistemas de senhas para atender os cidadãos na ordem de chegada. O sistema I atende os não idosos. O sistema II atende os idosos. Nessa situação: o sistema I, adota o esquema LIFO de organização de dados e o II, o esquema LIFO. tanto o sistema I, quanto o II, adotam o esquema vetor de organização de dados. tanto o sistema I, quanto o II, adotam o esquema LIFO de organização de dados. tanto o sistema I, quanto o II, adotam o esquema FIFO de organização de dados. o sistema I, adota o esquema LIFO de organização de dados e o II, o esquema FIFO. Gabarito Comentado 4a Questão (Ref.: 201609148905) Fórum de Dúvidas (0) Saiba (0) Analisando o trecho do algoritmo abaixo, pode-se afirmar que se trata de uma operação de: Remoção de um elemento de uma estrutura LIFO Inserção de um elemento em uma estrutura LIFO Inserção de um elemento em uma estrutura FIFO Exibição de um elemento em uma estrutura LIFO Remoção de um elemento de uma estrutura FIFO Gabarito Comentado 5a Questão (Ref.: 201609796427) Fórum de Dúvidas (0) Saiba (0) 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 Inserção Substituição Ordenação por inserção Inicialização Gabarito Comentado 6a Questão (Ref.: 201609351158) Fórum de Dúvidas (0) Saiba (0) 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. Fila Sequencial Pilha Sequencial Pilha Encadeada Lista Encadeada Lista Sequencial Gabarito Comentado 7a Questão (Ref.: 201609148361) Fórum de Dúvidas (0) Saiba (0) O que acontece ao se inserir uma informação quando já usamos toda a área disponível do vetor (topo = fim)? overflow underflow inclusão remoção ordenação Gabarito Comentado 8a Questão (Ref.: 201609148741) Fórum de Dúvidas (0) Saiba (0) 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 II e III estão corretas. Apenas a afirmação I está correta. Apenas as afirmações II está corretas. Apenas as afirmações I e III estão corretas. Apenas as afirmações I e II estão corretas. Gabarito Comentado Na pequena pizzaria de Dom Leopoldo os pedidos são anotados em uma planilha e assim que montam um lote com 5 pizzas, as entregas começam. As pizzas são organizadas no veículo de entrega respeitando a ordem da entrega, ou seja, a 1a. pizza a ser entregue fica na frente de todas e assim, sucessivamente. Dessa forma, a última pizza a ser entregue ficará no final do veículo, após todas as outras pizzas. Qual a estrutura de dados é mais adequada para modelar a organização das pizzas no veículo de entrega ? lista grafo árvore pilha fila Gabarito Comentado 2a Questão (Ref.: 201609216006) Fórum de Dúvidas (0) Saiba (0) A estrutura de dados do tipo pilha (stack) é um tipo abstrato de dado baseada no princípio: Da indiferença. First In First Out (FIFO). Last In First Out (LIFO). De dividir para conquistar. Da localidade de referência. Gabarito Comentado 3a Questão (Ref.: 201609216009) Fórum de Dúvidas (0) Saiba (0) Quando as inserções e as remoções ocorrem sempre no mesmo lado da lista, trata-se de uma estrutura de dados denominada. Lista encadeada. Vetor. Lista circular. Fila. Pilha. Gabarito Comentado 4a Questão (Ref.: 201609351160) Fórum de Dúvidas (0) Saiba (0) As pilhas sequenciais são estruturas que guardam a ordem reversa dos dados nelas armazenados, e isto em muitas ocasiões é muito vantajoso. A operação usada para inserir um elemento X numa pilha é conhecida na literatura como PUSH (X). Para remover um elemento de uma pilha a operação é o POP( ). Assim estas duas funções devem implentar o algoritmo LIFO (Last In - First Out ) ou o último a entrar é o primeiro a sair. Sendo assim se aplicarmos as seguintes operações em uma PILHA vazia: PUSH(10),PUSH(5),POP(),PUSH(7),POP(),PUSH(2),POP(),POP( ). Quais valores restarão na pilha? Apenas o 2 Nenhum, a pilha estará vazia. 10 e 2 Apenas o 10 7 e 2 Gabarito Comentado 5a Questão (Ref.: 201609370481) Fórum de Dúvidas (0) Saiba (0) Um programador recebeu a tarefa de construir um programa que receba uma cadeia de caracteres e verifique se esta cadeia de caracteres é um PALÍNDROME, sabendo-se que um PALÍNDROME apresenta a mesma sequência de caracteres da esquerda pra direita, quanto da direita para esquerda, marque a opção que possui a estrutura de dados mais adequada a este programa. Pilha SequencialFila Sequencial Árvores Grafos Lista Sequencial Gabarito Comentado 6a Questão (Ref.: 201609216010) Fórum de Dúvidas (0) Saiba (0) Na estrutura de dados tipo pilha, há duas operações básicas para empilhamento e desempilhamento. Essas operações são conhecidas como: PUSH e PULL; HEAP e POP; Base e Topo; PUSH e POP. PULL e POP; Gabarito Comentado 7a Questão (Ref.: 201609688099) Fórum de Dúvidas (0) Saiba (0) Observe a função que manipula uma pilha e assuma que TAM é uma constante definida com valor 5. Saiba que o nome da função já explícita a finalidade dela. Considere a chamada da função conforme linha abaixo, sabendo-se que vet é um vetor de tamanho 5 e que não tem nenhum valor ainda: Analise as afirmativas abaixo que sugerem correções, ou não, na definição na função e assinale a opção que contem as afirmativas corretas. I Faltou & antes da variável vetor e irá acusar erro. II A variável topo está sem tipo. III O teste está correto porque o índice do primeiro elemento do vetor em C++ é 1, obrigatoriamente. IV Na linha comentada deveria estar presente um comando de atribuição que decrementaria a variável topo. V A linha vetor[topo]=valor; está correta. I , III e V estão corretas II e V estão corretas I e II estão corretas I, II e IV estão corretas I e III estão corretas Gabarito Comentado 8a Questão (Ref.: 201609140437) Fórum de Dúvidas (0) Saiba (0) Seja S uma pilha inicialmente vazia. Primeiramente, o elemento A é inserido em S. Em seguida, o elemento B, e assim por diante, até a inclusão final do elemento E. Ao término dessas operações, qual elemento estará no topo de S? C. B. D. A. E. Usa-se um vetor para se implementar uma fila sequencial, entretanto se nesta estrutura ocorrer diversas operações de remoção e inserção podemos afirmar que: A estrutra sofrerá do fenômeno chamado esgotamento de memória e logo não poderá mais ser utilizada. A solução é o uso da fila circular. Um vetor não pode ser usado na implementação de uma fila sequencial apenas em pilhas sequenciais. A estrutra sofrerá do fenômeno esgotamento de memória, mas se os dados estiverem ordenados isto não afetará a estrutura. Um vetor é uma estrutura base correta para esta implementação, já que está imune a fenômenos como esgotamento de memória. A estrutura fila não sofre esgotamento de memória, isto ocorre com as pilhas já que implementam o algoritmo LIFO. 2a Questão (Ref.: 201609771276) Fórum de Dúvidas (0) Saiba (0) Assumindo que estamos com uma estrutura de dados do tipo FIFO, as operações abaixo vão resultar em que elementos na mesma: ENFILEIRAR(4), ENFILEIRAR(5), ENFILEIRAR(6), DESENFILEIRAR(), DESENFILEIRAR(), ENFILEIRAR(5), ENFILEIRAR(7), DESENFILEIRAR() 5 7 7 5 4 6 7 4 5 4 5 6 3a Questão (Ref.: 201609351162) Fórum de Dúvidas (0) Saiba (0) As filas sequenciais são estruturas de dados utilizadas em diversas aplicações, tais como fila de processo, fila de impressão, sistemas de senha etc. Entretanto, nas aplicações onde há muita movimentação de dados, inserções e remoções de dados na fila, surgem espaços ociosos que podem levar ao fenômeno chamado de esgotamento de memória. Para sanar este problema pode-se substituir a fila sequencial por: lista sequencial fila circular lista circular pilha circular pilha sequencial Gabarito Comentado 4a Questão (Ref.: 201609148398) Fórum de Dúvidas (0) Saiba (0) Um banco adotou dois sistemas de senhas para atender os cidadãos na ordem de chegada. O sistema I atende todas pessoas que não possuem atendimento prioritário. O sistema II atende somente pessoas com atendimento prioritário. Nessa situação, Tanto o sistema I, quanto o II, adota o esquema lista duplamente encadeada de organização de dados. Tanto o sistema I, quanto o II, adota o esquema FIFO de organização de dados. Tanto o sistema I, quanto o II, adota o esquema LIFO de organização de dados. O sistema I adota o esquema LIFO de organização de dados e o II o esquema FIFO. O sistema I adota o esquema FIFO de organização de dados e o II, o esquema LIFO. 5a Questão (Ref.: 201609148886) Fórum de Dúvidas (0) Saiba (0) As estruturas de dados podem ser do tipo estática e dinâmica. As listas são estruturas parecidas com vetores podendo ser do tipo dinâmica. Entretanto, existem várias implementações de estruturas do tipo listas. Dessa forma, a estrutura que para o acesso de um dado, este precisa estar na saída, caso contrário, precisa remover os elementos a sua frente, é chamada de: Matriz Struct Pilha Fila Bolha Gabarito Comentado 6a Questão (Ref.: 201609739885) Fórum de Dúvidas (0) Saiba (0) Considere uma fila simples F de inteiros, do tipo Fila definido abaixo. Tal fila deverá armazenar códigos de agentes de uma firma de espionagem, desde que haja espaço para um novo agente. Assinale a opção que corretamente desenfileira o código de um agente, sabendo que a fila F foi inicializada de acordo com o trecho de código abaixo. struct Fila { in t v[100], inicio, fim; } ; Fila F; F. inicio = 0; F.fim = -1; void desenfileirar(Fila &F) { if (F.fim == -1 && F.inicio == 0) cout << "Não há agentes para retirar. " << endl; else { cout << "Removido o agente " << F.v[F.inicio]; F.inicio++; } } void desenfileirar(Fila &F) { if (F.inicio > F.fim) cout << "Não há agentes para retirar. " << endl; else { cout << "Removido o agente " << F.v[F.inicio]; F.inicio++; } } void desenfileirar(Fila F) { cout << "Removido o agente " << F.v[F.inicio]; F.inicio--; } void desenfileirar(Fila &F) { if (F.inicio > F.fim) cout << "Não há agentes para retirar. " << endl; else { cout << "Removido o agente " << F.v[F.inicio]; } } void desenfileirar(Fila F) { if (F.inicio > F.fim) cout << "Não há agentes para retirar. " << endl; else { cout << "Removido o agente " << F.v[F.inicio]; F.inicio++; } } Gabarito Comentado7a Questão (Ref.: 201609361005) Fórum de Dúvidas (0) Saiba (0) Um aluno do EAD estava estudando para a prova de Estrutura quando viu o trecho do programa abaixo em uma apostila. Como não estava com seu micro, começou a analisar a função entra(...), ficando atento a alguns membros da struct. Quando finalizou, virou a página da apostila e viu a resposta. Então, ficou muito feliz por ter identificado a estrutura Assinale a alternativa onde está presente a resposta correta. Fila Fila Circular Lista simplesmente encadeada Lista Linear Pilha Gabarito Comentado 8a Questão (Ref.: 201609737186) Fórum de Dúvidas (0) Saiba (0) Ao inserirmos em uma estrutura de dados do tipo fila sequencial os seguintes elementos: A, B, C, D, exatamente nesta ordem. E em seguida realizarmos duas operações consecutivas de remoção na fila e imediatamente inserirmos dois novos elementos o X e o W. Podedmos afirmar que se realizarmos uma nova operação de remoção, o elemento que será removido desta fila sera o: D C X W A Prezado (a) Aluno(a), Você fará agora seu EXERCÍCIO DE FIXAÇÃO! Lembre-se que este exercício é opcional, mas não valerá ponto para sua avaliação. O mesmo será composto de questões de múltipla escolha (3). Após a finalização do exercício, você terá acesso ao gabarito. Aproveite para se familiarizar com este modelo de questões que será usado na sua AV e AVS. 1. Qual das inicializações de ponteiros apresentadas abaixo está correta? int *p = new int[]; int *p = new *int; int *p = new int; int *p = new int*; int *p = create int; 2. 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 tipo Paciente e a lista é do tipo List assim definidos : struct Paciente { long int matricula; string nome, endereco e tel; }; struct List { Paciente p; struct List *link; }; List * inserePac(List *i) { List *novo = new List; Paciente pat; novo->p = pat; novo->link = i; return novo; } List * inserePac(List *i, Paciente pt) { List *novo = new List; novo->p = pt; novo->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 pac) { List *novo = new List; novo.p = pac; novo.link = i; return novo; } List insereCliente(List *i, Paciente pac) { List novo[]; novo[0].p = pac; novo[0].link = i; return novo; } Gabarito Comentado 3. Montei uma biblioteca popular que aceita doações sem limites. Marque a opção que especifica o tipo de lista e o tipo de alocação de memória mais adequados para este problema. lista sequencial e alocação dinâmica de memória fila dinâmica e alocação dinâmica de memória fila encadeada e alocação dinâmica de memória lista encadeada e alocação dinâmica de memória pilha dinâmica e alocação dinâmica de memória Gabarito Comentado 4. Assumindo que um valor do tipo inteiro ocupa 4 bytes na memória, e se baseando nas linhas de código abaixo, marque a alternativa correta: int *p; p = (int *)malloc(20*sizeof(int)); Atribuição ao ponteiro ¿p¿ de um endereço estático de memória A operação é inválida Alocação dinâmica de 80 bytes na memória Alocação dinâmica de espaço de memória suficiente para armazenar 20 x 4 valores inteiros Alocação dinâmica 20 bytes na memória 5. 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 iii esta correta. Somente as afirmativas i e ii estão corretas. Somente a afirmativa i esta correta. Todas as afirmativas estão incorretas. Todas as afirmativas estão corretas. Gabarito Comentado 6. Marque a afirmativa que represente uma separação. Intercalar a ordem dos dados da lista do final para o início, atualizando a lista. 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. Consiste em dividir a lista em duas outras listas. A quantidade de nós que cada lista terá, depende da necessidade. Organizar os dados da lista em ordem crescente ou decrescente. Gabarito Comentado 7. Em uma lista linear simplesmente encadeada. Além do campo relativo ao dado, cada nó possui dois ponteiros, O ponteiro do "primeiro" nó não é NULL, mas sim aponta de volta para o "primeiro" nó da lista, formando um ciclo. Cada ponteiro possui um só endereço que referencia o primeiro nó da lista. Cada nó possui um só ponteiro que referencia o próximo nó da lista. O ponteiro do "último" nó não é NULL, mas sim aponta de volta para o "primeiro" nó da lista. Gabarito Comentado 8. Considere int *ptr, *qtr, *r; int a = 10, b = 20; Após executar cada instrução conforme a ordem dada a seguir : ptr = &a; qtr = &b; *ptr = *ptr + *qtr; ++(*qtr); r = qtr; qtr = ptr; assinale a opção que mostra, correta e respectivamente, os valores de *ptr, *qtr , *r , a e b . 30 20 0 30 21 30 30 21 30 21 30 21 21 10 20 30 20 20 10 20 30 30 21 10 20 1. Assinale a opção correta. Sobre pilha dinâmica podemos afirmar que : é recomendada para qualquer tipo de aplicação em que insere-se no final e retira-se do início. usa o critério FIFO, visto que é dinâmica. usa o critério LIFO e é implementada usando-se listas encadeadas. insere-se em qualquer posição, antes ou após qualquer nó, visto que é dinâmica. só pode ter seus dados impressos no sentido do último nó para o primeiro nó. Gabarito Comentado 2. Estava um aluno estudando Lista Simplesmente Encadeada quando encontrou em um site a definição da struct nodo e de uma função cujo nome você deverá escolher para substituir XXX nas opções abaixo depois que analisar a função, assumindo que teste foi realizado, permitindo que a operação fosse realizada. struct nodo { int info; struct nodo *prox; }; nodo* XXX(nodo *ptr, int valor){ nodo *temp = new nodo; ... temp->info = valor; temp->prox = ptr; return temp; } InsereNoFim InsereNoFrente BuscaNaLista ListaNo RemoveNo Gabarito Comentado 3. Sobre uma estrutura de dados do tipo LIFO, observe as seguintes afirmações: (1) É uma pilha. (2) Pode ser uma fila com prioridades (3) É uma estrutura onde o primeiro elemento a entrar é o último a sair. Sobre estas afirmações marque a opção correta: Apenas as afirmações (1) e (3) são verdadeiras Todas as afirmações são verdadeiras Apenas a afirmação (3) é verdadeira Apenas a afirmação (1) é verdadeira Todas as afirmações são falsas 4. Para converter de decimal para binário usamos a estrutura de dados pilha. Assinale a opção que, corretamente, indica as ações corretas para empilhar o resto da divisão gerado no processo de conversão, considerando uma lista simplesmente encadeada. Considere o tipo definido abaixo : struct no { int dado; struct no *link; }; Basta alocar memória com new, armazenar o resto da divisão do número por 2 no campo dado do novo nó e aterrar o link do novo nó. É preciso armazenar o resto da divisão do número por 2 no campo dado do primeiro nó da lista e retornar o ponteiro para este nó. Não é necessário alocar memória com new. Basta criar uma struct do tipo no, armazenar o resto da divisão número por 2 no campo dado e aterrar o campo link. Basta alocar memória com new e armazenar o resto da divisão do número por 2 no campo dado do novo nó . É preciso alocar memória com new, armazenar o resto da divisão do número por 2 no campo dado do novo nó, apontar o link do novo nó para o início da lista e enfim, retornar o ponteiro para o novo nó. Gabarito Comentado 5. Tínhamos declarado um ponteiro de nome ptr e precisávamos construir uma estrutura de repetição que pudesse repetir enquanto o ponteiro não fosse nulo. Observe os trechos abaixo e assinale qual a afirmativa correta. I if (ptr !=NULL) II if( !ptr ) III if(ptr) IV while (ptr !=NULL) V while (ptr) IV e V estão corretas. I e IV estão corretas III está correta III e V estão corretas I e II estão corretas. Gabarito Comentado 6. Assinale a característica que NÃO está relacionada às estruturas de dados encadeadas: Cada elemento guarda pelo menos um ponteiro para outro elemento da estrutura. A memória ocupada por seus elementos é, em geral, liberada com o uso de delete. A memória para armazenar seus elementos é, em geral, alocada com o uso de new. Em geral, marca-se o último elemento com um ponteiro de valor NULL. Consomem memória de maneira permanente, só sendo liberadas ao fim do programa. 7. Sabendo que uma fila encadeada possui seus nós definidos pela : struct no { int x; no *prox; }; Marque a alternativa que representa corretamente a criação ou alocação do nó na sintaxe do C++ para utilização na fila. p *no=new no; no p -> new no; no *p -> new no; no *p=new no; p *no -> new no; Em uma lista duplamente encadeada, seus nodos são compostos por campos cujos tipos podem ser de diferentes naturezas, entretanto dois de seus campos devem ser ponteiros para o mesmo tipo do nodo, são estes os ponteiros ant e prox, que apontam respectivamente para o nodo anterior e para o próximo nodo. Esta característica permite que a estrutura seja percorrida em ambos os sentidos. Assim analisando as operações a seguir: p->ant->prox=p->prox; p->prox->ant=p->ant; Sendo p um ponteiro que aponta para um dos nodos da lista, pode-se afirmar que: As operações possibilitam o percurso do ponteiro p da esquerda para direita. As operações possibilitam o percurso do ponteiro p da direita para esquerda. As operações possibilitam a busca de um nodo apontado pelo ponteiro p. As operações removem o nodo apontado pelo ponteiro p. As operações inserem novo nodo, após o nodo apontado pelo ponteiro p. 2. Em uma lista linear duplamente encadeada. Além do campo relativo ao dado, cada nó possui dois ponteiros. Cada ponteiro possui um só endereço que referencia o primeiro nó da lista. O ponteiro do "primeiro" nó não é NULL, mas sim aponta de volta para o "primeiro" nó da lista, formando um ciclo. Cada nó possui um só ponteiro que referencia o próximo nó da lista. O ponteiro do "último" nó não é NULL, mas sim aponta de volta para o "primeiro" nó da lista. Gabarito Comentado 3. Uma estrutura de dados em lista duplamente encadeada permite na cadeia movimentos para cima e para baixo ou para frente e para trás. frente e para trás, apenas. frente, apenas. trás, apenas. cima e para baixo, apenas. Gabarito Comentado 4. Considere uma lista duplamente encadeada não circular em que struct nodupla { int dado; struct nodupla *dlink; // aponta p/ o nó à direita struct nodupla *elink; // aponta p/ o nó à esquerda }; sendo nodupla *p; //ponteiro para o início da lista A opção que corretamente mostra as instruções para inserir um valor no início da lista apontada por p é : nodupla *novo; novo = new nodupla; novo->dado = valor; novo->dlink = p; novo->elink = NULL; p->elink = novo; p = novo; n nodupla *novo; novo = new nodupla; novo->dado = valor; novo->dlink = p; if (p != NULL) p->elink = novo; p = novo; nodupla *novo; novo = new nodupla; novo.dado = valor; novo.dlink = p; novo.elink = NULL; if (p != NULL) p.elink = novo; p = novo; n nodupla *novo; novo = new nodupla; novo->dado = valor; novo->elink = NULL; if (p != NULL) p->elink = novo; p = novo; nodupla *novo; novo = new nodupla; novo->dado = valor; novo->dlink = p; novo->elink = NULL; if (p != NULL) p->elink = novo; p = novo; Gabarito Comentado 5. Uma estrutura de dados em lista duplamente encadeada permite na cadeia movimentos para: trás, apenas. frente e para trás, apenas. frente, apenas. cima e para baixo, apenas. cima e para baixo ou para frente e para trás. Gabarito Comentado 6. Em relação às estruturas de dados, é correto afirmar: Nos sistemas operacionais, a execução dos processos concorrentes ocorre segundo os princípios da estrutura FILO. Guardar endereço de memória em "nós", normalmente identificados por previous ou next, é uma característica presente nas listas duplamente encadeadas. LIFO refere-se à estrutura de dados do tipo pilha, que nada mais é do que uma lista linear, sem disciplina de acesso, onde o primeiro elemento a entrar é o último a sair. LIFO refere-se à estrutura de dados do tipo pilha, que nada mais édo que uma lista linear, duplamente encadeada. Um grafo com um único vértice e sem arestas é conhecido como dígrafo. Gabarito Comentado 7. Suponha uma listagem mantida com informações sobre um equipamento a ser adquirido por uma empresa. A listagem possui as informações sobre de 10 fornecedores, descritas a seguir: próximo: um ponteiro para o próximo fornecedor da listagem; nome: nome, identificando o fornecedor; valor: preço do equipamento no fornecedor; anterior: um ponteiro para o fornecedor anterior da listagem. Sendo o fornecedor "Z" o quinto elemento desta listagem e "X" e "Y" dois outros fornecedores que não pertencem à listagem, com seus respectivos ponteiros "pZ", "pX" e "pY", considere o trecho de código abaixo. pY->proximo = pX; pX->anterior = pY; pX->proximo = pZ->proximo; pZ->proximo->anterior = pX; pZ->proximo = pY; pY->anterior = pZ; Este trecho de código é usado para inserir na listagem os fornecedores: Y, antes do Z, e X, antes do Y. Y, antes do Z, e X, logo após o Z. X, antes do Z, e Y, logo após o Z. X, logo após o Z, e Y, logo após o X. Y, logo após o Z, e X, logo após o Y. Gabarito Comentado 8. Com relação à lista duplamente encadeada, é correto afirmar que : A lista precisa ter sempre um ponteiro apontando para o 1º. nó Não pode haver remoções no meio da lista. Não pode ser vazia. A lista pode ser percorrida com igual facilidade para a direita ou para a esquerda, pois existem dois ponteiros. Consome menos memória do que uma lista simplesmente encadeada, se tivermos uma mesma aplicação. Gabarito Comentado
Compartilhar