Baixe o app para aproveitar ainda mais
Prévia do material em texto
ESTRUTURAS DE DADOS Exercícios EXERCÍCIOS Considere o seguinte algoritmo, descrito em C++, que manipula um vetor de oito posições, indexadas de 1 a 8 Ao final da execução, o conteúdo do vetor M será: a) 10, 20, 30, 40, 50, 60, 70, 80 b) 40, 10, 80, 20, 70, 30, 60, 50 c) 40, 30, 20, 10, 80, 70, 60, 50 d) 50, 60, 70, 80, 10, 20, 30, 40 e) 80, 70, 60, 50, 40, 30, 20, 10 int main() { int i, temp; int M[] = {10,20,30,40,50,60,70,80}; for (i = 0; i < 8; i++) { temp = M[i]; M[i] = M[7-i]; M[7-i] = temp; } } EXERCÍCIOS Vetores e matrizes são classificados como estruturas ___________ pois podem ser controladas por meio de _________ criados previamente e conhecidos pelo desenvolvedor. As lacunas correspondem respectivamente a: a) Dinâmicas e índices b) Estáticas e índices c) Complexas e ponteiros d) Dinâmicas e ponteiros e) Estáticas e ponteiros EXERCÍCIOS Na linguagem C++, considere: I. O endereço armazenado em um ponteiro deve ser do mesmo tipo que o ponteiro (ex. um ponteiro para um int não pode armazenar o endereço de um float). II. Exceção à regra apontada em (I) é o ponteiro void. III. Não é possível chamar uma função segundo seu endereço, ainda que por meio de um ponteiro que armazena o endereço de início dessa função. Está correto o que se afirma em a) I, apenas. b) II, apenas. c) I e II, apenas. d) II e III, apenas. e) I, II e III. EXERCÍCIOS Para os recursos presentes na linguagem de programação C, são feitas as afirmativas abaixo. I - Permite acesso de baixo nível através da introdução de código Assembly no programa C. II - A passagem de parâmetros por referência para funções pode ser simulada através da utilização de ponteiros. III - O tipo de dados typedef são estruturas variáveis que permitem que dados relacionados sejam combinados e manipulados como um todo. Está(ão) correta(s) a(s) afirmativa(s) a) I, apenas. b) II, apenas. c) III, apenas. d) I e II, apenas. e) I, II e III. EXERCÍCIOS 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. a) 30 30 21 30 21 b) 30 30 21 10 20 c) 30 21 21 10 20 d) 30 20 20 10 20 e) 30 20 0 30 21 EXERCÍCIOS Sobre as funções, é CORRETO afirmar que a) na passagem por valor, o parâmetro que vai ser passado na chamada da função deve ser uma variável, de tal forma que uma alteração de valor neste parâmetro também altera a variável correspondente. b) na passagem por referência, o parâmetro que vai ser passado na chamada da função deve ser uma variável, de tal forma que uma alteração de valor neste parâmetro também altera a variável correspondente. c) uma variável é dita global quando a sua passagem no momento da chamada de uma função se dá tanto por valor quanto por referência, enquanto que uma variável é dita local quando esta passagem se dá, apenas, por valor. d) na passagem por valor, o parâmetro passado na chamada da função é o ponteiro para a variável que contém o valor desejado. EXERCÍCIOS Analise as seguintes afirmações relacionadas a conceitos básicos de Programação de Computadores. I. O escopo de uma variável de programa é a faixa de instruções na qual a variável é visível. Uma variável é visível em uma instrução se puder ser referenciada nessa instrução. II. Um registro é um agregado, possivelmente heterogêneo de elementos, cujos elementos individuais são identificados por nomes. III. Um array é um agregado heterogêneo de elementos de dados, cujo elemento individual é identificado por sua posição em relação ao primeiro. IV. Um tipo Ponteiro é aquele em que as variáveis têm uma faixa de valores que consiste em uma string ou coleção de caracteres e um valor especial denominado Null. Indique a opção que contenha todas as afirmações verdadeiras. a) I e II b) II e III c) III e IV d) I e III e) II e IV EXERCÍCIOS Sobre listas encadeadas, é INCORRETO afirmar que: a) os dados são armazenados dinamicamente b) são acessadas pelo primeiro nodo da lista c) o final da lista faz uma referência para null d) possuem tamanho fixo e) pilhas e filas são versões limitadas de listas encadeadas EXERCÍCIOS Inseriu-se em uma pilha os valores A,B,C e D, seguindo essa ordem. Se logo após são executadas duas operações de remoção, pode-se dizer que: a) Os valores removidos serão A e B, nessa ordem b) Os valores removidos serão C e D, nessa ordem c) Os valores removidos serão D e C, nessa ordem d) A resposta depende da chave de busca, pois a remoção depende da chave fornecida e) Nenhuma das alternativas anteriores EXERCÍCIOS Assinale a opção que apresenta as duas funções básicas realizadas pelo gerenciador de memória no espaço livre da memória HEAP. a) Alocação e Liberação. b) Busca e Compactação. c) Ajuste e Reposicionamento. d) Ordenamento e Compactação. e) Balanceamento e Redistribuição. EXERCÍCIOS Na maioria dos sistemas operacionais, os arquivos são organizados hierarquicamente em um esquema de diretórios (pastas) e sub- diretórios. Qual a estrutura mais adequada para representar este problema ? a) árvore b) fila c) pilha d) grafo e) lista EXERCÍCIOS Pergunta: Sobre as estruturas de dados lineares, assinale V ou F: I - Em uma pilha, o último elemento a entrar é o primeiro a sair. II - Em uma fila, o primeiro elemento a entrar é o último a sair. III - Uma lista permite que as inserções possam ser feitas em qualquer lugar (posição), mas as remoções, não. IV - Em uma lista circular com encadeamento simples, o primeiro elemento aponta para o segundo e para o último. V - Para remover um elemento de uma lista duplamente encadeada, deve-se alterar o encadeamento dos elementos anterior e próximo ao elemento removido. A sequência correta de cima para baixo: a) V,F,V,F,V b) V,F,F,V,F c) V,F,F,F,V d) F,V,V,F,F e) F,F,V,V,V EXERCÍCIOS Ordene a coluna direita de acordo com a da esquerda, associando as características de implementação de cada: (Podem existir mais de uma opção à direita para alguma da esquerda) Indique a alternativa correta: a) a - b - a - c - c - b b) a - a - a - b - c - b c) b - b - a - c - c - c d) a - c - a - b - c - a e) c - a - a - b - c - b a) Lista ligada desordenada ( ) Inserção e remoção em tempo constante b) Array ordenada ( ) Consulta por busca binária em tempo O(log n) c) Método (Bubble Sort) ( ) Consulta atravessa a lista toda ( ) Consiste na troca de valores entre posições consecutivas ( ) é o processo mais simples de entender, mais fácil de implementar ( ) inserção e remoção levam tempo linear EXERCÍCIOS Imagine um software com toda a infra estrutura para manter TADs de pilhas e filas (Estruturas de dados e funções de manipulações). Agora suponha o programa recém iniciado e ambas as estruturas ainda vazias. O que pode ser afirmado depois da seguinte sequencia de operações: Push (''A'') Push (''B'') Queue (''C'') Pop ( ) Queue (''D'') Dequeue ( ) Push (''E'') Queue (''F'') Dequeue ( ) a) A fila terá os elementos A, B e E b) A pilha terá os elementos C, D e E c) A fila terá apenas vogais d) A pilha terá apenas vogais e) A pilha terá apenas consoantes EXERCÍCIOS O grau de uma árvore corresponde a) Ao grau do nó de maior grau da árvore b) À quantidade de níveis da árvore c) À quantidade de nós da árvore d) À quantidade de folhas da árvore e) À quantidade de filhos do nó raiz da árvore EXERCÍCIOS Sobre a estrutura de dados árvore, assinale a afirmativa incorreta. a) Em toda árvore binária cheia a raiz tem grau 1. b) A quantidade de nós de uma árvore é igual a soma da quantidade de nós folhas e a quantidade de nós não terminais. c) Em umaárvore de busca binária as subárvores também são de busca binária. d) Se uma árvore binária possui 3 níveis e é cheia então esta árvore possui 7 nós. e) Uma árvore pode ser vazia ou não. EXERCÍCIOS No ENEM 2012, 5790989 estudantes confirmaram inscrição. Evidentemente, muitos faltaram às provas e o número exato não era sabido quando foi pedido ao desenvolvedor que definisse uma função para que pudesse listar toda inscrição, e respectiva nota de redação tabulada, que tivesse alcançado uma pontuação maior ou igual à nota procurada e, ao final, o total de estudantes que atingiram essa meta. Como só interessava a nota de redação, o desenvolvedor definiu a struct abaixo e começou a definir a função queFaz(...) para que pudesse atender ao que foi pedido, usando a estrutura de dados Lista Sequencial. Entretanto, ele não conseguiu finalizar. Poderia você ajudá-lo? struct descobre { int insc, nota; }; void queFaz(descobre estudantes[], int tamanho, int nota) { int x, conta = 0; if (tamanho == 0) cout << "\nAtencao! LISTA vazia\n"; else { ... } } EXERCÍCIOS (CONT.) Assinale a alternativa correta onde está presente o trecho que completa a função. a) for (x = 0; x < tamanho; x++) if (estudantes[x].nota >= nota) { cout << "\n" << estudantes[x].insc << "\t" << estudantes[x].nota; conta++; } cout << "\nTotal:" << conta; b) for (x = 0; x < tamanho; x++) if (estudantes[x].nota >= nota) cout << "\n" << estudantes[x].insc << "\t" << estudantes[x].nota; conta++; cout << "\nTotal:" << conta; c) for (x = 0; x <= tamanho; x++) if (estudantes[x].nota >= nota) { cout << "\n" << estudantes[x].insc << "\t" << estudantes[x].nota; conta++; } cout << "\nTotal:" << conta; d) for (x = 1; x <= tamanho; x++) if (estudantes[x].nota >= nota) { cout << "\n" << estudantes[x].insc << "\t" << estudantes[x].nota; conta++; } cout << "\nTotal:" << conta; e) for (x = 1; x <= tamanho; x++) if (estudantes[x].nota >= nota) cout << "\n" << estudantes[x].insc << "\t" << estudantes[x].nota; conta++; cout << "\nTotal:" << conta; EXERCÍCIOS O que é um Ponteiro na Linguagem de Programação C++? Um ponteiro nada mais é do que uma variável que ao invés de conter um valor, contém um endereço de memória EXERCÍCIOS Quais são as operações mais comuns efetuadas com pilhas? Criar: cria uma pilha vazia. Empilhar: insere um elemento no topo da pilha. Desempilhar: remover um elemento do topo da fila. Topo: exibe o elemento do topo da fila. Exibir a quantidade: retorna a quantidade de elementos da pilha Vazio: verifica se a pilha está vazia EXERCÍCIOS Quais são as operações mais comuns efetuadas com filas? Criar: cria uma fila vazia Enfileirar: insere um elemento no fim da fila Desenfileirar: remover um elemento no início da fila Exibir início: exibe o elemento do início da fila Exibir a quantidade: retorna a quantidade de elementos da fila Vazio: verifica se a fila está vazia EXERCÍCIOS Uma árvore de busca binária que possui como raiz o valor 30, filho esquerdo 15, filho direito 60, e tem também como filhos do nó 15 os valores 10 e 20, e como filhos do nó 60 os valores 40 e 80, teve a sequência de inserção geradora da árvore: a) 30, 15, 40, 10, 20, 60, 80 b) 30, 15, 40, 10, 20, 80, 60 c) 30, 15, 60, 10, 20, 40, 80 d) 30, 60, 20, 80, 15, 10, 40 e) 30, 60, 40, 10, 20, 15, 80 EXERCÍCIOS Em uma árvore binária completa o número máximo de comparações em uma busca é igual a) Á quantidade de nós da árvore b) Á quantidade de folhas da árvore c) Ao grau da árvore d) À quantidade de níveis da árvore e) Ao dobro do número de nós da árvore EXERCÍCIOS No desenvolvimento de sistemas, a escolha de estruturas de dados em memória é especialmente relevante. Dentre outras classificações, é possível agrupar essas estruturas em lineares e não lineares, conforme a quantidade de sucessores e antecessores que os elementos da estrutura possam ter. Assinale a opção que apresenta, respectivamente, estruturas de dados lineares e não lineares. a) Tabela de dispersão e fila. b) Estrutura de seleção e pilha. c) Pilha e estrutura de seleção. d) Pilha e árvore binária de busca. e) Fila e pilha. EXERCÍCIOS 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 é: a) a1, b1, c2, d2. b) a2, b2, c1, d2. c) a1, b2, c1, d1. d) a2, b1, c2, d1. e) a1, b1, c2, d1 Quadro 1 - Estruturas Quadro 2 - Coleções de Dados 1. Lineares a. Pilha 2. Não Lineares b. Vetor c. Grafo d. Lista EXERCÍCIOS Em relação aos tipos abstratos de dados — TAD, é correto afirmar: a) O TAD não encapsula a estrutura de dados para permitir que os usuários possam ter acesso a todas as operações sobre esses dados. b) Na transferência de dados de uma pilha para outra, não é necessário saber como a pilha é efetivamente implementada. c) Alterações na implementação de um TAD implicam em alterações em seu uso. d) Um programador pode alterar os dados armazenados, mesmo que não tenha conhecimento de sua implementação. e) TAD é um tipo de dados que esconde a sua implementação de quem o manipula. EXERCÍCIOS Em relação a tipos abstratos de dados, é correto afirmar que a) o TAD não encapsula a estrutura de dados para permitir que os usuários possam ter acesso a todas as operações disponibilizadas sobre esses dados. b) algumas pilhas não admitem serem declaradas como tipos abstratos de dados. c) filas não permitem declaração como tipos abstratos de dados. d) os tipos abstratos de dados podem ser formados pela união de tipos de dados primitivos, mas não por outros tipos abstratos de dados. e) são tipos de dados que escondem a sua implementação de quem o manipula; de maneira geral as operações sobre estes dados são executadas sem que se saiba como isso é feito. EXERCÍCIOS Dadas as afirmativas abaixo, identifique as corretas e marque a alternativa verdadeira. I-Vetores e matrizes servem apenas para construir agregados de dados heterogêneos. II-Registros em C são tipos de dados compostos formados por mais de um tipo básico de dados. III-Na Linguagem C, "struct" é uma palavra reservada que serve para implementar registros. IV-Registros são tipos de dados heterogêneos. a) todas as afirmativas estão corretas. b) estão corretas apenas as afirmativas I, II e III. c) estão corretas apenas as afirmativas II, III e IV. d) estão corretas apenas as afirmativas I, II e IV. e) estão corretas apenas as afirmativas I, III e IV. EXERCÍCIOS Considerando a estrutura de dados do tipo Pilha, assinale a alternativa correta a respeito de operações realizadas sobre esse tipo de estrutura. a) A pilha é uma estrutura de dados do tipo FIFO (First-In, First-Out). b) A pilha é uma estrutura de dados do tipo GIGO (Garbage-In, Garbage-Out). c) Um elemento a ser inserido é colocado na base da pilha. d) Um elemento a ser removido é o que está há mais tempo na estrutura de dados. e) Um elemento a ser removido é o que está há menos tempo na estrutura de dados. EXERCÍCIOS Sobre estrutura de dados, identifique o que está correto afirmar. I. Pilha é uma estrutura de dados com acesso restrito aos seus elementos, uma vez que eles são colocados e retirados por um único lado e são ordenados pelo princípio LIFO (last in first out). Assim, sempre que um elemento é adicionado ou retirado seu topo é alterado. II. Pilha é o tipo de estrutura usada, por exemplo, na avaliação de expressões numéricas, na recursividade e pelos compiladores, na passagem de parâmetros para as funções. III. Registro é uma estrutura básica que permite guardar coleções de dados de diferentes tipos, sendo normalmente utilizado quando um objeto tem diferentes atributos, isto é, contém campos de diferentes tipos.IV. Lista pode conter um número qualquer de elementos, expandindo-se ou contraindo-se conforme o elementos são inseridos ou retirados. Nesse tipo de estrutura, os acessos tanto podem ser feitos sequencialmente como diretamente. V. Fila, assim como a pilha , é uma versão especial de lista, e como tal, seus elementos são ordenados pelo princípio LIFO (last in first out). a) I, II e III. b) I, III, IV e V. c) II, III, IV e V. d) I, III e V. e) II, IV e V. EXERCÍCIOS Para organizar o acesso dos processos que demandam recursos do computador (uso da CPU, acesso ao disco rígido e a outros dispositivos de Entrada e Saída), o Sistema Operacional gerencia essas demandas colocando os processos requisitantes em: a) Árvores b) Pilhas c) Listas d) Filas e) Structs EXERCÍCIOS Analise a seguinte representação de estrutura de dados. Essa estrutura é denominada a) Árvore Binária. b) Árvore Quaternária. c) Grafo Cíclico Completo. d) Grafo Direcionado. e) Pilha Invertida. EXERCÍCIOS 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) 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. b) A estrutra sofrerá do fenômeno esgotamento de memória, mas se os dados estiverem ordenados isto não afetará a estrutura. c) Um vetor não pode ser usado na implementação de uma fila sequencial apenas em pilhas sequenciais. d) Um vetor é uma estrutura base correta para esta implementação, já que está imune a fenômenos como esgotamento de memória. e) A estrutura fila não sofre esgotamento de memória, isto ocorre com as pilhas já que implementam o algoritmo LIFO. EXERCÍCIOS Assinale a alternativa que indica o nome dado ao nó de uma árvore sem nós filhos. A) Vértice interno B) Ramo C) Raiz D) Órfão E) Folha EXERCÍCIOS Um dos conceitos muito úteis na ciência da computação é a estrutura de dados chamada pilha. Uma pilha é um conjunto________ de itens, no qual novos itens podem ser inseridos no(a) ________ e itens podem ser retirados do(a)________ da pilha, por meio das operações________ e _________, respectivamente. Assinale a alternativa que completa corretamente as lacunas. a) desordenado - base - topo - down - up b) ordenado - final - início - up - down c) ordenado - topo - topo - push - pop d) desordenado - topo - base - push - pop e) ordenado - topo - topo - pop - push EXERCÍCIOS Considere a estrutura de dados representada graficamente a seguir. Essa estrutura, em particular, também é denominada Árvore A) Quartenária. B) Binária Cheia. C) Binária Completa. D) Binária Zigue-Zague. E) Não Estritamente Binária. EXERCÍCIOS Considere: I - Os algoritmos de busca binária e de busca seqüencial executam processamento repetitivo. II - Os algoritmos de busca binária e de busca seqüencial utilizam a técnica de recursão. III - A busca seqüencial executa cada fase de repetição na forma de uma subtarefa da fase anterior. IV - A busca binária trabalha com uma forma circular de repetição. Está correto o que consta em: (A) I, apenas. (B) II, apenas. (C) I e II, apenas. (D) I, II, III e IV. (E) I e IV, apenas. EXERCÍCIOS Qual a definição para o termo Estrutura de Dados? São construções de uma linguagem de programação que agregam um ou mais elementos de dados para formar um tipo de dado que armazena uma quantidade maior de informações, ou seja, é um modo particular de armazenamento e organização de dados em um computador de modo que possam ser usados eficientemente. EXERCÍCIOS A conversão de um número decimal para uma outra base numérica, por exemplo binária ou octal ou ainda hexadecimal pode ser realizada através de um processo de divisões sucessivas, onde os restos da divisão são armazenados em uma estrutura de dados e ao serem recuperados em ordem reversa ao armazenamento obtém-se o número convertido na mesma base usada para divisão. Para realizar esta tarefa indique qual a estrutura de dados mais adequada e justifique sua resposta. A estrutura mais adequada para conversão de base pelo processo de divisões sucessivas é a pilha, pois os restos das divisões são empilhados na estrutura e ao se desempilhar os dados, estes já são fornecidos na ordem reversa em que foram armazenados, fornecendo desta forma o número já convertido na nova base.
Compartilhar