Buscar

Estruturas de Dados - Exercícios Aulas 1 a 10 - 2014.2

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 42 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 6, do total de 42 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 9, do total de 42 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

ESTRUTURA DE DADOS 
Exercício: CCT0260_EX_A1_201307185967 Volta
Aluno(a): RENATO GOMES CHAVES Matrícula: 201307185967
Data: 17/09/2014 15:45:12 (Finalizada
 
 
 1a Questão (Ref.: 201307437375) 
 
 Navegadores para internet armazenam os últimos endereços visitados em uma estrutura de 
dados. Cada vez que um novo site é visitado, o endereço do site é adicionado na estrutura de 
endereços. Quando se aciona o retorno ("back"), o navegador permite que o usuário retorne no 
último site visitado e retira o endereço do site da estrutura de dados. 
Assinale a estrutura de dados mais adequada para este problema. 
 
 pilha 
 
grafo 
 
árvore 
 
lista 
 
fila 
 
 
 
 2a Questão (Ref.: 201307472491) 
 
 
 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( ). 
 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 executa perfeitamente independente da ordem das funções já que 
existem os seus protótipos. 
 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. 
 
 
 
 3a Questão (Ref.: 201307471703) 
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 ? 
 
 
fila 
 
pilha 
 
grafo 
 árvore 
 lista 
 
 
 
 4a Questão (Ref.: 201307770759) 
Leia com atenção as afirmativas abaixo e assinale a resposta correta. 
 
I A estrutura de dados que melhor representa os diretórios ou pastas de arquivos do computador é a árvore. 
II A estrutura de dados FILA é não linear assim como o Grafo. 
III O termo folha em uma estrutura de dados é usado para um nó sem filhos e que tem grau 0, 
IV O grau de uma árvore é definido pelo número de subárvores de um nó. 
V O grafo é uma estrutura de dados que tem limitação para o número de vértices. 
VI Uma das aplicações da estrutura de dados grafo é a Computação Gráfica. 
 
 I, II e V são afirmativas verdadeiras 
 II, IV e V são afirmativas verdadeiras 
 I, III, IV e VI são afirmativas verdadeiras 
 II, IV, V e VI são afirmativas verdadeiras 
 I, II, III e VI são afirmativas verdadeiras 
 
 
 
 5a Questão (Ref.: 201307434934) 
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 I e II estão corretas 
 
As alternativas I e III estão corretas. 
 
As alternativas III e IV estão corretas. 
 
Todas as alternativas estão corretas. 
 
As alternativas II e IV estão corretas. 
 
 
 
 6a Questão (Ref.: 201307471439) 
O processo de modularização de programa, utiliza funções a fim de 
tornar os códigos mais inteligíveis e também possibilitar uma 
manutenção mais fácil. Analise o código a seguir e marque a opção 
correta: 
 
 
 
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(). 
 O programa não executa corretamente pois as funções devem ser descritas antes da função main(), 
para que o compilador consiga recohecê-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 executa perfeitamente independente da ordem das funções já que existem os seus 
protótipos. 
Aula 2 
 
 
 1a Questão (Ref.: 201307299843) 
 
Assinale a opção certa. 
 Quando não se escreve o protótipo de uma função ... 
 
 A definição da função deverá ser escrita, obrigatoriamente, após o programa principal. 
 
A chamada da função poderá ser feita em qualquer hipótese. 
 
O programa não funcionará de forma alguma. 
 
A chamada da função não poderá ser feita em qualquer hipótese. 
 É preciso definir a função antes do programa principal. 
 Gabarito Comentado. 
 
 
 
 2a Questão (Ref.: 201307232676) 
 
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: 
 
 
Real 
 Global 
 
Local 
 
Inteiro 
 
Constante 
 
 
 
 3a Questão (Ref.: 201307232677) 
 
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 
 Vetor 
 
Função 
 Matriz 
 
Registro 
 Gabarito Comentado. 
 
 
 
 4a Questão (Ref.: 201307434941) 
 
Funções são instrumentos de modularização de programas, que tem como finalidade tornar o código mais 
legível, isto é mais fácil de entender, evita replicação de instruções e permite o reuso das funções em outros 
programas. Então considere o seguinte código: 
#include< iostream > 
using namespace std; 
 
int main( ) 
{ 
 float a=10.0; 
 float b=4.0; 
 cout < < media(a,b); 
 return 0; 
} 
float media(float x, float y) { return (x+y)/2;} 
 
Marque a alternativa CORRETA: 
 
 O código não compila, pois os parâmetros usados na chamada da função deveriam ser "x" e "y"; porém 
a chamada se deu com identificadores "a" e "b". 
 O código não compila, pois há necessidade de se declarar float media(float, float) como protótipo da 
função float media(float x, float y)antes da função principal. 
 
O código não compila, pois a função float media(float x, float y) retorna um valor que seria ser 
armazenado em uma variável do tipo float e só então poderia ser usado o comando cout para exibir o 
resultado. 
 
O código compila normalmente e apresenta como resultado o valor 7.0 
 
O código compila normalmente, pois como a descrição da função float media(float x, float y)está 
posicionada após a função int main ( ), não há necessidade do uso de protótipos. 
 Gabarito Comentado. 
 
 
 
 5a Questão (Ref.: 201307232707) 
 
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; 
} 
 
 
Retorna -1 se o valor de n foi encontrado. 
 Resulta em erro, se o valor de vl não estiver dentro de v. 
 Retorna a posição de v se o valor vlfoi 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. 
 
 
 
 6a Questão (Ref.: 201307437356) 
 
 
 
 Auxiliar = 100 Numero1 = 900 Numero2 = 80
 Auxiliar = 111 Numero1 = 1000 Numero2 = 80 
 Auxiliar = 100 Numero1 = 900 Numero2 = 20 
 Auxiliar = 101 Numero1 = 900 Numero2 = 20 
 Auxiliar = 100 Numero1 = 1000 Numero2 = 20 
 
 
Aula 3 
 1a Questão (Ref.: 201307232180) 
 
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 
 
Mergesort 
 Bublesort 
 
Heapsort 
 
Quicksort 
 Gabarito Comentado. 
 
 
 
 2a Questão (Ref.: 201307232129) 
 
Em uma pesquisa sequencial a lista deve estar? 
 
 
sempre desordenada. 
 
ordenada somente do início até a metade da lista. 
 
ordenada somente o primeiro da lista. 
 ordenada ou desordenada. 
 
desordenada somente da metade da lista até o final. 
 
 
 
 3a Questão (Ref.: 201307232543) 
 
Suponha uma listagem, contendo número de inscrição e pontuação (ordenada pelo número de inscrição) dos 
candidatos para o cargo de Analista de Sistemas de uma grande empresa pública. São 1024 candidatos inscritos 
e o sistema implementado para consulta do resultado, permite busca binária ou busca sequencial pelo número 
de inscrição. O número máximo de comparações executadas se fosse utilizada a busca binária e se fosse 
utilizada busca sequencial, respectivamente, seria de: 
 
 
9 e 9 
 
10 e 10 
 
1024 e 512 
 512 e 1024 
 
9 e 10 
 
 
 
 4a Questão (Ref.: 201307232683) 
 
Os métodos de ordenação são muito utilizados para facilitar a recuperação posterior de itens ordenados. 
Existem vários métodos de ordenação, por esse motivo, assinale corretamente a alternativa que mostra o nome 
do método que utiliza a estratégia de ordenação por trocas de vizinhos e é considerado o método mais simples. 
 
 
Hash 
 Bolha 
 
Binária 
 Seleção 
 
Inserção 
 Gabarito Comentado. 
 
 
 
 5a Questão (Ref.: 201307232497) 
 
Sobre o funcionamento da busca binária, é correto afirmar que dividindo seu vetor em duas metades. 
 
 
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. 
 
Se o item for menor que o item que está na metade do vetor, o item foi encontrado. 
 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, procure na segunda metade, ou seja, a da 
direita. 
 
 
 
 6a Questão (Ref.: 201307232350) 
 
Marque a afirmativa correta para a "Busca ou pesquisa binária". 
 
 
Consiste em fazer uma busca em um vetor desordenado, dividindo o espaço de busca ao meio e 
verificando se o dado está no meio ou, antes do meio ou depois do meio. 
 Consiste em fazer uma busca em um vetor já ordenado, dividindo o espaço de busca ao meio e 
verificando se o dado está no meio ou, antes do meio ou depois do meio. 
 
Consiste em adicionar um valor no vetor, mantendo a ordem existente e ajustando o total de elementos. 
 
É o processo pelo qual um conjunto de dados é colocado em uma ordem crescente ou decrescente. 
 
Consiste em adicionar um valor no vetor, alterando a ordem existente e ajustando o total de elementos. 
 
 
 
 
Aula 4 
 
1a Questão (Ref.: 201307437408) 
 
 
 
 uma mistura dos métodos de ordenação por inserção e bubblesort. 
 por inserção. 
 bubblesort. 
 
 
 uma mistura dos métodos de ordenação por seleção e por inserção. 
 por seleção. 
 Gabarito Comentado. 
 
 
 
 2a Questão (Ref.: 201307434948) 
 
Entre os diversos algoritmos de pesquisa existentes, certamente os mais famosos são os da pesquisa 
sequencial e o da pesquisa binária. A busca ou pesquisa sequencial pode ser aplicada em vetores 
independente destes estarem ordenados, entretanto a busca binária só se aplica em vetores ordenados. 
Seja o vetor A= {10,35,41,55,69,70,98}, suponha que o número 70 foi pesquisado pelo algoritmo da 
busca sequencial e também pelo algoritmo da busca binária, ambos algoritmos realizam testes nos 
elementos do vetor até achar o que procuram ou definirem que o elemento não se encontra no vetor. 
Sendo assim marque a alternativa que expressa o número de testes realizados pela busca sequencial e 
o número de testes realizados pela busca binária, respectivamente, até encontrarem o 70. 
 
 
6 e 4 
 6 e 2 
 
6 e 1 
 
5 e 5 
 
7 e 1 
 Gabarito Comentado. 
 
 
 
 3a Questão (Ref.: 201307299807) 
 
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). 
 
 
II, IV e V. 
 
I, III e V. 
 
I, III, IV e V. 
 I, II e III. 
 
II, III, IV e V. 
 
 
 
 4a Questão (Ref.: 201307232348) 
 
Marque a afirmativa correta para a "Ordenação em Listas Lineares Sequenciais". 
 
 
Consiste em adicionar um valor no vetor, alterando a ordem existente e ajustando o total de elementos. 
 
Consiste em fazer uma busca em um vetor já ordenado, dividindo o espaço de busca ao meio e 
verificando se o dado está no meio ou, antes do meio ou depois do meio. 
 É o processo pelo qual um conjunto de dados é colocado em uma ordem crescente ou decrescente. 
 
Consiste em fazer uma busca em um vetor desordenado, dividindo o espaço de busca ao meio e 
verificando se o dado está no meio ou, antes do meio ou depois do meio. 
 Consiste em adicionar um valor no vetor, mantendo a ordem existente e ajustando o total de elementos. 
 
 
 
 5a Questão (Ref.: 201307232686) 
 
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: 
 
 Bolha 
 
Binária 
 
Hash 
 
Inserção 
 Seleção 
 Gabarito Comentado. 
 
 
 
 6a Questão (Ref.: 201307442186) 
 
Observe a função e o vetor abaixo e acompanhe no teste de mesa até 
que i seja 0, j seja 5 e a instrução vet[i]=temp; tiver sido executada. 
 
 
 
Assinale a alternativa onde estão presentes os valores corretos de v[i], 
aux etemp. 
 
 23 , 4, e 6 
 67, 4 e 23 
 6 , 4 e 6 
 67, 3 e 15 
 18, 2 e 67 
 
 
Aula 5 
 
 1a Questão (Ref.: 201307232169) 
 
A técnica LIFO (last in first out), utilizada em programação estruturada, é fundamentada no conceito de: 
 
 
Ponteiro 
 
Registro 
 Pilha 
 
Loop 
 
Fila 
 
 
 
 2a Questão (Ref.: 201307232336) 
 
 
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 - b - a - c - c - b 
 
a - a - a - b - c - b 
 
b - b - a - c - c - c 
 c - a - a - b - c - b 
 
a - c - a - b - c - a 
 Gabarito Comentado. 
 
 
 
 3a Questão (Ref.: 201307232155) 
 
O que acontece quando tentamos retirar um elemento de uma pilha que já está vazia? 
 
 
Remoção. 
 
Overflow. 
 
Ordenação. 
 Underflow. 
 
Inclusão. 
 
 
 
 4a Questão (Ref.: 201307442311) 
 
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? 
 
Assinale a alternativa correta onde está presente o trecho que completa a função. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 Gabarito Comentado. 
 
 
 
 5a Questão (Ref.: 201307224238) 
 
No contexto de estrutura de dados, uma pilha é: 
 
 
um tipo de lista linear em que as operações de inserção são realizadas em uma extremidade e as 
operações de remoção são realizadas em outra extremidade. 
 um tipo de lista linear em que as operações de inserção e remoção são realizadas na extremidade 
denominada topo. 
 
um tipo de lista linear em que as operações de inserção e remoção são realizadas aleatoriamente. 
 
uma lista do tipo FIFO. 
 
uma lista do tipo LILO. 
 
 
 
 6a Questão (Ref.: 201307437435) 
 
 
 
 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.matricula[i] << " " << L.nome[i] << endl; 
 for (int i = 0; i < n; i++) 
 cout << L[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].matricula << " " << L[i].nome << endl; 
 
Aula 6 
 1a Questão (Ref.: 201307434953) 
 
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? 
 
 Nenhum, a pilha estará vazia. 
 
10 e 2 
 
Apenas o 2 
 
Apenas o 10 
 
7 e 2 
 
 
 
 2a Questão (Ref.: 201307771892) 
 
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, II e IV estão corretas 
 I e III estão corretas 
 I e II estão corretas 
 II e V estão corretas 
 I , III e V estão corretas 
 
 
 
 3a Questão (Ref.: 201307472535) 
 
As estruturas de dados devem ser especificadas de modo que estas auxiliem 
as aplicações em sua principal tarefa ou funcionalidade. Sendo assim, pode-
se desenvolver uma aplicação capaz de fazer a conversão de números da 
base 10, para a base binária, octal ou hexadecimal a partir de um algoritmo 
de divisões sucessivas. Este algoritmo baseia na divisão de um número 
decimal pela base que se deseja a transformação, armazenando o resto da 
divisão em uma estrutura de dados, efetuando nova divisão no resultado 
obtido da divisão prévia, novamente armazenando o resto desta operação na 
estrutura de dados e assim por diante até que o resultado da divisão seja 
zero. Neste momento, a estrutura possui exatamente, na ordem reversa, os 
algarismos correspondentes ao número convertido para a nova base. 
Analisando esta estratégia poder-se-ia dizer que a estrutura de dados mais 
propícia para tal tarefa é : 
 
 Fila 
 Pilha 
 Árvore 
 Grafo 
 Lista 
 
 
 
 4a Questão (Ref.: 201307440898) 
 
Sabemos que podemos representar uma expressão de três formas, sendo que uma 
delas é chamada de notação polonesa reversa ( pós-fixa). 
Suponha que um professor de Estrutura de Dados desejasse compor a nota do 
bimestre com uma prova e um trabalho oral, usando pesos diferenciados para as 
notas. Sendo assim, usaria a média ponderada como a expressão abaixo. 
  
A única calculadora que encontrou disponível foi uma com representação pós fixa.
Assinale a alternativa que apresenta a sequência que deveria ser digitada pelo 
professor para conseguir calcular a média de um aluno. 
  
 
 / + * nota1 peso1 * nota2 peso2 + peso1 peso2 
 nota1 peso1 * nota2 peso2 * peso1 peso2 + + / 
 nota1 peso1 * nota2 peso2 * + peso1 peso2 + / 
 nota1 peso1 nota2 peso2 peso1 peso2 * * + + / 
 / * nota1 peso1 + * nota2 peso2 + peso1 peso2 
 Gabarito Comentado. 
 
 
 
 5a Questão (Ref.: 201307470550) 
 
Um jogo de memória fornece sequências de números e o jogador deve dizer qual a sequência inversa para cada 
nova sequência fornecida pelo jogo. Qual a estrutura de dados mais adequada para modelar esse jogo ? 
 
 pilha 
 
fila 
 
árvore 
 
lista 
 
grafo 
 
 
 
 6a Questão (Ref.: 201307771958) 
 
Abaixo temos algumas afirmativas sobre o uso da estrutura pilha de forma estática e sequencial. Leia com 
muita atenção e assinale a opção correta. 
 
I Não existe movimentação na pilha quando inserimos ou removemos um elemento. Apenas o valor da 
variável que controlao topo é alterado. 
II Não podemos usar estruturas homogêneas, ou heterogêneas e uma variável para controlar o topo na 
alocação sequencial. 
III Um dos fatores que limita o crescimento da pilha é a quantidade de memória alocada quando usamos 
matrizes. 
IV Quando formos empilhar um elemento, é preciso verificar se a pilha não está cheia. Isso evita underflow. 
V Quando formos desempilhar um elemento, é preciso verificar se a pilha não está vazia. Isso evita overflow. 
 
 Somente a I está correta 
 I e III estão corretas 
 I, IV e V estão corretas 
 II, IV e V estão corretas 
 I, IV e V estão corretas 
 
 
 
Aula 7 
 1a Questão (Ref.: 201307232183) 
 
Seja Q uma estrutura de dados do tipo fila, em que ENQUEUE(X) significa a adição do elemento X à Q e que 
DEQUEUE(), a retirada de um elemento. Q está inicialmente vazia e sofre a seguinte sequencia de operações: 
ENQUEUE(1) 
ENQUEUE(2) 
DEQUEUE() 
ENQUEUE(3) 
ENQUEUE(4) 
DEQUEUE() 
DEQUEUE() 
ENQUEUE(5) 
Ao final da sequencia, a soma dos elementos de que (Q) será? 
 
 9 
 15 
 
5 
 
0 
 
6 
 Gabarito Comentado. 
 
 
 
 2a Questão (Ref.: 201307444798) 
 
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 Circular 
 Lista simplesmente encadeada 
 Fila 
 Lista Linear 
 Pilha 
 Gabarito Comentado. 
 
 
 
 3a Questão (Ref.: 201307232699) 
 
Analisando a figura abaixo, marque a alternativa correta que apresenta o tipo de estrutura de dados utilizado. 
 
 
 
Hash 
 
Struct 
 Pilha 
 
Matriz 
 Fila 
 
 
 
 4a Questão (Ref.: 201307232675) 
 
Sistemas operacionais utilizam filas para gerenciar, tarefas, processos e recursos. Qual é a ordenação dos 
elementos armazenados aleatoriamente em uma lista do tipo LIFO? 
 
 
Posições aleatórias 
 Ordem de entrada 
 
Primeiro que entra é o primeiro a sair 
 Ordem decrescente 
 
Ordem crescente 
 Gabarito Comentado. 
 
 
 
 5a Questão (Ref.: 201307232652) 
 
Qual das alternativas a seguir pode definir uma estrutura de fila? 
 
 Entrada de dados pelo final e saída pelo início. 
 
Entrada de dados pelo início e saída pelo final. 
 
Entrada e saída de dados pelo início. 
 
Entrada e saída de dados pelo final. 
 
Entrada e saída de dados em qualquer local. 
 
 
 
 6a Questão (Ref.: 201307437599) 
 
 
 
 void enfileirar(Fila F, int valor) {
 if (F.fim == n - 1) 
 cout << "Fila cheia\n"; 
 else { 
 F.fim++; 
 F.v[F.fim] = valor; 
 } 
} 
 void enfileirar(Fila F, int valor) {
 if (F.fim == n) 
 cout << "Fila cheia\n"; 
 else { 
 F.fim++; 
 F.v[F.fim] = valor; 
 } 
} 
 void enfileirar(Fila &F, int valor) {
 if (F.fim == n - 1) 
 cout << "Fila cheia\n"; 
 else { 
 F.fim++; 
 F.v[F.fim] = valor; 
 } 
} 
 void enfileirar(Fila &F, int valor) {
 if (F.fim == n - 1) 
 cout << "Fila cheia\n"; 
 else  
 F.v[F.fim] = valor; 
 } 
 void enfileirar(Fila &F, int valor) {
 if (fim == n - 1) 
 cout << "Fila cheia\n"; 
 else { 
 fim++; 
 v[fim] = valor; 
 } 
} 
 
 
Aula 8 
 1a Questão (Ref.: 201307470554) 
 
Sou uma empresária que quer crescer e por isso, tenho que aumentar progressivamente a minha lista de 
clientes, sem limitar este crescimento. Assim, à medida que novos clientes são cadastrados, posso, se 
necessário, contratar mais e mais empregados. Marque a opção que especifica o tipo de lista e o tipo de 
alocação de memória mais adequados para este problema. 
 
 
fila dinâmica e alocação dinâmica de memória 
 lista sequencial 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 
 
fila encadeada e alocação dinâmica de memória 
 Gabarito Comentado. 
 
 
 
 2a Questão (Ref.: 201307771250) 
 
Na Alocação dinâmica, temos alguma regras a considerar. Leia atentamente as afirmativas abaixo e assinale 
a correta. 
 
I Alocou com new, desaloca com free 
II Alocou com new[], desaloca com delete 
III Alocou com new[], desaloca com delete[] 
IV Alocou com new[], desaloca com free[] 
V Alocou com new, desaloca com delete 
 
 I e III estão corretas 
 I, II, III e V estão corretas 
 III e V estão corretas 
 II e V estão corretas 
 I e IV estão corretas 
 
 
 
 3a Questão (Ref.: 201307471684) 
 
   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 = 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, Cliente cl)
{ 
      Lista *novo ; 
      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; 
} 
 Lista  insereCliente(Lista *p, Cliente cl)
{ 
      Lista  novo[]; 
      novo[0].c = cl; 
      novo[0].link = p; 
     return novo; 
} 
                     
 Gabarito Comentado. 
 
 
 
 4a Questão (Ref.: 201307472550) 
 
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->próximo.valor=5.60; 
 pt.valor->5.60; 
 pt->próximo->valor=5.60; 
 pt->5.60; 
 pt->valor=5.60; 
 
 
 
 5a Questão (Ref.: 201307472553) 
 
As variáveis são na verdade trecho de memórias que armazenam dados de 
diversas naturezas, portanto sempre que declara-se uma variável, na 
linguagem C++, é necessário informar o tipo de dado que esta irá armazenar. 
Um tipo especial de variáveis são os ponteiros, isto é, variáveis que 
armazenam apenas os endereços de outras variáveis. Assim os ponteiros 
são usados para que se possa acessar de forma indireta uma outra variável. 
Sabendo-se disto e supondo que o endereço na memória da variável "a" é 
100 eo endereço da memória da variável ponteiro é 200, analise o trecho de 
código abaixo e marque a alternativa que representa a saída do programa: 
  
 
 
 100 100 200 
 9 9 200 
 100 9 200 
 200 9 100 
 9 100 200 
 
 
 
 6a Questão (Ref.: 201307774074) 
 
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? 
 
 
as afirmações i, ii e iii estão corretas. 
 somente a afirmação iv esta correta. 
 as afirmações i e ii estão corretas. 
 
as afirmações ii e iv estão corretas. 
 
somente a afirmação i esta correta. 
 
Aula 9 
 1a Questão (Ref.: 201307471694) 
 
Tenho uma lista encadeada de processos para ler e despachar, mas obedeço a ordem de chegada, ou seja, 
o primeiro processo que chega é o primeiro processo a ser atendido por mim. Sabendo que cada processo 
é do tipo Processo, previamente definido e que a lista é do tipo Lista, assinale a opção que corretamente 
implementa a retirada de um processo da lista, que pode ter um ou mais processos. 
 Considere p um ponteiro para o primeiro nó da lista e ainda, 
struct Lista { 
 Processo p; 
 struct Lista *link; 
 }; 
 
 Lista *retirar(Lista *p) 
{ 
 Lista *aux = p; 
 while (p->link->link !=NULL) 
 p = p->link; 
 delete p->link; 
 p->link = NULL; 
 return p; 
} 
 Lista *retirar(Lista *p) 
{ 
 delete p; 
 p = p->link; 
 return p; 
} 
 Lista retirar(Lista *p) 
{ 
 Lista *aux = p; 
 p = p->link; 
 return p; 
} 
 Lista *retirar(Lista *p) 
{ 
 Lista *aux = p; 
 p = p->link; 
 delete aux; 
 return p; 
} 
 Lista *retirar(Lista *p) 
{ 
 Lista *aux = p; 
 while (p->link->link !=NULL) 
 p = p->link; 
 p->link = NULL; 
 return p; 
} 
 Gabarito Comentado. 
 
 
 
 2a Questão (Ref.: 201307472543) 
 
Seja o seguinte exemplo de nodo de uma lista de encadeada: 
  
struct nodo{ 
 float valor; 
 string produto; 
 nodo * proximo; 
 }; 
Sabendo-se que nesta lista o último nó ou nodo possui o campo próximo nulo 
(null), marque a alternativa que representa corretamente a operação de 
busca do último nodo, a partir de um ponteiro pt apontado para o primeiro 
nodo da lista. 
 
 while(pt != null)pt=pt->próximo; 
 while(pt->próximo)pt=pt->próximo; 
 while(próximo)pt=próximo; 
 while(pt->próximo->proximo)pt=pt->próximo; 
 while(pt->próximo != null)pt=pt->próximo->proximo; 
 
 
 
 3a Questão (Ref.: 201307445119) 
 
Um aluno, sempre que tinha um tempo sobrando, estudava o conteúdo da 
disciplina de Estrutura de Dados. 
  
Ao pesquisar sobre as funções usadas por Pilhas e Filas dinâmicas, percebeu que 
existe uma função que tanta pode ser usada com Pilha quanto por Fila. 
  
Assinale a alternativa onde se encontra a finalidade dessa função. 
 
 Inserir um elemento 
 Remover um elemento 
 Listar todos os elementos 
 Ordenar os elementos 
 Exibir um elemento 
 Gabarito Comentado. 
 
 
 
 4a Questão (Ref.: 201307232702) 
 
Na área de estrutura de dados, em determinados casos, é necessário utilizar um tipo de dado onde seu valor 
serve como referência direta a outro valor alocado em outro espaço de memória. Este tipo de dado se chama: 
 
 
Matriz 
 
Variável 
 Vetor 
 Ponteiro 
 
Endereço 
 
 
 
 5a Questão (Ref.: 201307232136) 
 
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 
 e) C - E - C - E - C 
 a) E - C - E - C - E 
 
d) E - C - E - C - C 
 
c) E - E - C - C - E 
 Gabarito Comentado. 
 
 
 
 6a Questão (Ref.: 201307775796) 
 
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) 
 
 III está correta 
 I e IV estão corretas 
 I e II estão corretas. 
 IV e V estão corretas. 
 III e V estão corretas 
 
 
Aula 10 
 1a Questão (Ref.: 201307232354) 
 
Em uma lista linear duplamente encadeada. 
 
 Cada nó possui um só ponteiro que referencia o próximo nó da lista. 
 
Cada ponteiro possui um só endereço que referencia o primeiro nó da lista. 
 
O ponteiro do "último" nó não é NULL, mas sim aponta de volta para o "primeiro" nó da lista. 
 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. 
 Gabarito Comentado. 
 
 
 
 2a Questão (Ref.: 201307232204) 
 
O armazenamento de dados na memória do computador é feito de forma ordenada, utilizando-se estruturas e 
regras de operações. Das alternativas a seguir, assinale a correta: 
 
 
Existem várias formas de apresentação de listas lineares, como listas circulares e as matrizes, que são 
formas exclusivas das listas de alocação encadeada. 
 Em uma lista linear com alocação duplamente encadeada os nós da estrutura ocupam espaços aleatórios 
na memória e cada nó armazena além da sua informação os endereços do nó anterior e do próximo nó 
da estrutura. 
 
Em uma lista linear com alocação sequencial, os dados são heterogêneos e os nós da lista podem ter 
tamanhos diferentes, mas exigem espaço em endereço contíguo de memória. 
 
A lista binária é uma forma não-linear de organização dos dados. Existe um nó denominado raiz da 
árvore, que pode ter duas ou mais sub-árvores, que por sua vez também podem ter outras sub-árvores. 
 
Fila e Pilha são tipos especiais de listas lineares. Na Fila, o último que entra é o primeiro que sai, 
enquanto na Pilha, o primeiro que entra é o primeiro que sai. 
 
 
 
 3a Questão (Ref.: 201307235741) 
 
Um tipo de estrutura de dados é declarada em C como: 
typedef struct no *apontador; 
 struct no{ 
 int valor; 
 apontador esq, dir; 
} 
onde esq e dir representam ligações para os dados da esquerda e direita, respectivamente. Qual das seguintes 
alternativas é uma implementação correta da operaçãoque inverte as posições dos dados da esquerda e da 
direita uma estrutura p, onde t é um apontador auxiliar. 
 
 
t=p; 
p->esq = p->dir; 
p->dir = p->esq; 
 
p->esq = p->dir; 
t = p->esq; 
p->dir = t; 
 
p->dir=t; 
p->esq = p->dir; 
p->dir = t; 
 
t=p->dir; 
p->esq = p->dir; 
p->dir = t; 
 t=p->dir; 
p->dir = p->esq; 
p->esq = t; 
 
 
 
 4a Questão (Ref.: 201307232570) 
 
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, apenas. 
 frente e para trás, apenas. 
 
trás, apenas. 
 
cima e para baixo, apenas. 
 Gabarito Comentado. 
 
 
 
 5a Questão (Ref.: 201307232565) 
 
 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. 
 
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, antes do Z, e X, logo após o Z. 
 Y, logo após o Z, e X, logo após o Y. 
 Gabarito Comentado. 
 
 
 
 6a Questão (Ref.: 201307232182) 
 
Em relação as estruturas de dados, aquela que corresponde ao armazenamento em uma lista linear com a 
posição relativa (não contígua) na memória de dois nós consecutivos da lista é conhecida por alocação: 
 
 
Combinada. 
 
Binária. 
 
Seqüencial. 
 
Estática. 
 Encadeada.

Outros materiais