Buscar

Estrutura de Dados

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ê também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes
Você viu 3, do total de 43 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

Você também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes
Você viu 6, do total de 43 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

Você também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes
Você viu 9, do total de 43 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

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

/////////////////////// Prova A1 /////////////////////////////////////////////////////// 
 1a Questão (Ref.: 201602459313) Fórum de Dúvidas (1) Saiba (1) 
 
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, III, IV e V. 
 I, II e III. 
 
I, III e V. 
 
I, III, IV e V. 
 
II, IV e V. 
 
 Gabarito Comentado 
 
 
 2a Questão (Ref.: 201602983098) Fórum de Dúvidas (1) Saiba (1) 
 
 Preciso cadastrar todos os interessados em meu novo curso de programação. Qual a estrutura de dados mais 
adequada para modelar este problema, visto que não há qualquer preocupação com ordem de chegada ou saída de 
aluno da turma. 
 
 Fila 
 Árvore 
 Grafo 
 Lista 
 Pilha 
 
 
 
 3a Questão (Ref.: 201602983090) 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 ? 
 
 Pilha 
 Fila 
 Grafo 
 Árvore 
 Lista 
 
 
 
 4a Questão (Ref.: 201603005719) 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: 
 
 
Todas as alternativas estão corretas. 
 
As alternativas I e III estão corretas. 
 As alternativas I e II estão corretas 
 
As alternativas III e IV estão corretas. 
 
As alternativas II e IV estão corretas. 
 
 
 
 5a Questão (Ref.: 201602594440) 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 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: 
 
 
Todas as alternativas estão corretas. 
 
As alternativas I e III estão corretas. 
 
As alternativas II e IV estão corretas. 
 
As alternativas III e IV estão corretas. 
 As alternativas I e II estão corretas 
 
 Gabarito Comentado 
 
 
 6a Questão (Ref.: 201602980492) Fórum de Dúvidas (1) Saiba (1) 
 
Qual estrutura de dados não linear que é utilizada na implementação de Redes de Computadores, na 
Computação Gráfica, em modelagem de circuitos digitais e etc. E que se caracteriza por apresentar um conjunto 
de nós e conexões entre eles. 
 
 
Pilhas Encadeadas 
 Grafos 
 
Filas Encadeadas 
 
Listas Encadeadas. 
 
Vetores 
 
 
 
 7a Questão (Ref.: 201603069154) Fórum de Dúvidas (1 de 1) Saiba (1 de 1) 
 
Observe o trecho do programa em C++ abaixo e, após, entrar com os valores sugeridos para sua execução 
assinale a alternativa que representa a resposta final. 
cin >> a; 
cin >> b; 
cin >> c; 
cin >> d; 
 
cout << a; 
cout << b; 
cout << c; 
cout << d; 
 
cout << d; 
cout << c; 
cout << b; 
cout << a; 
 
 
Após a impressão dos valores pela ordem teremos duas filas. 
 
Após a impressão dos valores pela ordem teremos uma fila e um grafo. 
 Após a impressão dos valores pela ordem teremos uma fila e uma pilha. 
 
Após a impressão dos valores pela ordem teremos duas pilhas. 
 
Após a impressão dos valores pela ordem teremos uma pilha e uma fila. 
 
 
 
 8a Questão (Ref.: 201603005747) 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. 
 
 
Fila Sequencial 
 Lista Sequencial 
 
Pilha Encadeada 
 
Pilha Sequencial 
 
Lista Encadeada 
 
/////////////////////// Prova A2 /////////////////////////////////////////////////////// 
 1a Questão (Ref.: 201602459349) Fórum de Dúvidas (1) Saiba (1) 
 
Assinale a opção certa. 
 Quando não se escreve o protótipo de uma função ... 
 
 
A chamada da função não poderá ser feita em qualquer hipótese. 
 É preciso definir a função antes do programa principal. 
 
O programa não funcionará de forma alguma. 
 
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. 
 
 Gabarito Comentado 
 
 
 2a Questão (Ref.: 201602392213) 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; 
} 
 
 
Retorna -1 se o valor de n foi encontrado. 
 
Resulta em erro, se o valor de vl não estiver dentro de v. 
 
Retorna -1 se o valor de vl estiver dentro de v. 
 Retorna a posição de v se o valor vl foi encontrado. 
 
Retorna o valor de vl se o valor n foi encontrado. 
 
 Gabarito Comentado 
 
 
 3a Questão (Ref.: 201602596862) Fórum de Dúvidas (1 de 1) Saiba (1 de 1) 
 
 
 
 Auxiliar = 100 Numero1 = 900 Numero2 = 20 
 Auxiliar = 111 Numero1 = 1000 Numero2 = 80 
 Auxiliar = 100 Numero1= 1000 Numero2 = 20 
 Auxiliar = 100 Numero1 = 900 Numero2 = 80 
 Auxiliar = 101 Numero1 = 900 Numero2 = 20 
 
 Gabarito Comentado 
 
 
 4a Questão (Ref.: 201602594447) Fórum de Dúvidas (1) Saiba (1) 
 
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 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 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 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. 
 
O código compila normalmente e apresenta como resultado o valor 7.0 
 
 Gabarito Comentado 
 
 
 5a Questão (Ref.: 201602392217) Fórum de Dúvidas (1) Saiba (1) 
 
A declaração de variáveis na programação é o ato de reservar um espaço na memória para poder armazenar 
valores de um determinado tipo. Essas variáveis podem ser classificadas como variáveis locais e globais. Sendo 
assim, qual das situações abaixo representa melhor o conceito das variáveis globais. 
 
 
Em uma função "resul" tem-se uma variável ali declarada por 'T' que recebe o valor inteiro 5. Ao 
tentar chamar esta variável em outra função é mencionado um warning. 
 
Em duas funções diferentes temos duas variáveis também diferentes com o mesmo nome 
apresentando o mesmo valor. 
 
Se dentro de uma função "mostra" declararmos uma variável 'R' com um determinado valor 
poderemos imprimir esta variável em qualquer outra função do programa mostrando o valor atribuído 
na função "mostra". 
 Ao modificar o valor da variável 'X' na função "modifica" seu valor modificado poderá ser apresentado 
em qualquer outra função do programa. 
 
Se modificarmos o valor da variável 'Y' na função "soma", e depois imprimirmos na tela esta variável 
em outra função, onde tambem está declarada a variável 'Y', será acusado um erro de compilação. 
 
 Gabarito Comentado 
 
 
 6a Questão (Ref.: 201602392216) 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. 
 Ponteiros. 
 
Passagem por valor. 
 
Envio de inteiro. 
 
Registro. 
 
 Gabarito Comentado 
 
 
 7a Questão (Ref.: 201602383732) Fórum de Dúvidas (1 de 1) Saiba (1 de 1) 
 
Assinale a alternativa que apresenta duas formas de passagem de parâmetros para uma rotina ou função: 
 
 
Por teste e por reforço. 
 
Por inferência e por valor. 
 
Por memória e por disco. 
 
Por reforço e por referência. 
 Por valor e por referência 
 
 Gabarito Comentado 
 
 
 8a Questão (Ref.: 201603005737) 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: 
 
 
Os Grafos 
 
As Estruturas de Dados 
 
As Filas 
 As funções 
 
Os Vetores 
 
/////////////////////// Prova A3 /////////////////////////////////////////////////////// 
 1a Questão (Ref.: 201602596892) Fórum de Dúvidas (0) Saiba (0) 
 
Com relação à struct, é correto afirmar que : 
 
 Não é possível criar um vetor de structs, pois o vetor trabalha apenas com dados do 
mesmo tipo. 
 Cada elemento da struct é denominado membro ou campo, sendo que a struct pode 
armazenar elementos de tipos diferentes ou não. 
 Cada elemento da struct é chamado componente. 
 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. 
 
 Gabarito Comentado 
 
 
 2a Questão (Ref.: 201603063781) 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; 
 
Livro->liv.codigo = 12345; 
 
liv->preco = 30.70; 
 
Livro.liv.codigo = 12345; 
 
 
 
 3a Questão (Ref.: 201602392184) 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 seta tipo do campo 
 
Nome da estrutura ponto tipo do campo 
 
Nome da estrutura seta nome do campo 
 Nome da estrutura ponto nome do campo 
 
Nome da estrutura vírgula tipo do campo 
 
 Gabarito Comentado 
 
 
 4a Questão (Ref.: 201603005742) 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]=5.7; 
 vet[10].nota=5.7; 
 
vet[10].aluno.nota=5.7 ; 
 
aluno.vet[10].nota=5.7; 
 
 
 
 5a Questão (Ref.: 201602962053) 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].media=6.0; 
 
aluno[10]=6.0; 
 
aluno[3].10=6.0; 
 
vet[3].aluno=6.0; 
 
aluno[3].media=6.0; 
 
 
 
 6a Questão (Ref.: 201602391677) Fórum de Dúvidas (0) Saiba (0) 
 
Qual das seguintes estruturas de dados é classificada como heterogênea? 
 
 Registro 
 
Pilha 
 
Vetor 
 
Loop 
 
Fila 
 
 Gabarito Comentado 
 
 
 7a Questão (Ref.: 201603031531) Fórum de Dúvidas (0) Saiba (0) 
 
Pode-se definir uma estrutura heterogênea como sendoum 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. 
 
 
aluno.vet[10]=5.7; 
 
aluno.vet[10].nota=5.7; 
 
vet[10].aluno.nota=5.7 ; 
 vet[10].nota=5.7; 
 
vet[10]=aluno.5.7; 
 
/////////////////////// Prova A4 /////////////////////////////////////////////////////// 
 1a Questão (Ref.: 201602391856) Fórum de Dúvidas (1) Saiba (0) 
 
Marque a afirmativa correta para a "Busca ou pesquisa binária". 
 
 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 adicionar um valor no vetor, alterando a ordem existente e ajustando o total de elementos. 
 
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. 
 
 Gabarito Comentado 
 
 
 2a Questão (Ref.: 201603005744) Fórum de Dúvidas (1) Saiba (0) 
 
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 2 
 
5 e 5 
 
6 e 1 
 
6 e 4 
 
7 e 1 
 
 
 
 3a Questão (Ref.: 201602977310) 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 Interna 
 
Ordenação Simples 
 
Ordenação Simples Externa 
 
Ordenação Externa 
 
Ordenação Eficiente 
 
 Gabarito Comentado Gabarito Comentado Gabarito Comentado 
 
 
 4a Questão (Ref.: 201602980484) Fórum de Dúvidas (1) Saiba (0) 
 
Analisando o trecho de código a seguir: 
inicio=0; 
fim= tamanho - 1; 
meio=(inicio+fim)/2; 
while(procura != nomeVetor[meio] && inicio != fim) 
{ 
 if(procura > nomeVetor[meio]) 
 inicio=meio+1; 
 else 
 fim=meio; 
 meio=(inicio+fim)/2; 
} 
if(nomeVetor[meio]==procura) 
 cout<<"\n....: "< < outroVetor[meio]<<endl; 
else 
 cout<<"\nDado nao encontrado\n";</endl; 
Pode-se afirmar que: 
 
 
trata-se da implementação do algortimo de busca sequencial 
 trata-se da implementação do algortimo de busca binária. 
 
trata-se da implementação do algortimo de ordenação por inserção. 
 
trata-se da implementação do algortimo de ordenação por seleção. 
 
trata-se da implementação do algortimo de ordenação bolha. 
 
 Gabarito Comentado 
 
 
 5a Questão (Ref.: 201602392189) Fórum de Dúvidas (1 de 1) Saiba (0) 
 
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. 
 
 
Binária 
 
Hash 
 
Seleção 
 Bolha 
 
Inserção 
 
 Gabarito Comentado 
 
 
 6a Questão (Ref.: 201602392192) 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 
 
Bolha 
 
Hash 
 
Inserção 
 
 Gabarito Comentado 
 
 
 7a Questão (Ref.: 201602395249) 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 é: 
 
 
Bolha 
 
Inserção 
 Pesquisa binária 
 
Seleção 
 
Pesquisa sequencial 
 
 Gabarito Comentado 
 
 
 8a Questão (Ref.: 201602980481) 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 é: 
 
 
1,2,4,5 
 
1,4,2,5 
 
4,1,2,5 
 2,4,1,5 
 
2,1,4,5 
 
/////////////////////// Prova A5 /////////////////////////////////////////////////////// 
 1a Questão (Ref.: 201602383750) 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: 
 
 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 LIFO. 
 
tanto o sistema I, quanto o II, adotam o esquema vetor de organização de dados. 
 
o sistema I, adota o esquema LIFO de organização de dados e o II, o esquema FIFO. 
 
tanto o sistema I, quanto o II, adotam o esquema LIFO de organização de dados. 
 
 Gabarito Comentado 
 
 
 2a Questão (Ref.: 201602392204) 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 
 
Exibição de um elemento em uma estrutura LIFO 
 Inserção de um elemento em uma estrutura LIFO 
 
Inserção de um elemento em uma estrutura FIFO 
 
Remoção de um elemento de uma estrutura FIFO 
 
 Gabarito Comentado 
 
 
 3a Questão (Ref.: 201602392040) 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 
 
 
 4a Questão (Ref.: 201603039726) 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 : 
 
 Ordenação por inserção 
 Inserção 
 Busca 
 Inicialização 
 Substituição 
 
 Gabarito Comentado 
 
 
 5a Questão (Ref.: 201602594457) 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. 
 
 
Pilha Sequencial 
 Lista Sequencial 
 
Fila Sequencial 
 
Pilha Encadeada 
 
Lista Encadeada 
 
 Gabarito Comentado 
 
 
 6a Questão (Ref.: 201602596941) Fórum de Dúvidas (0) Saiba (0) 
 
 
 
 for (int i = 0; i < n; i++) 
 cout << L.matricula << " " << L.nome << 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].matricula << " " << L[i].nome << endl; 
 for (int i = 0; i < n; i++) 
 cout << L[i].matricula << " " << L[i].nome[30] << endl; 
 for (int i = 0; i < n; i++) 
 cout << L[i] << endl; 
 
 Gabarito Comentado 
 
 
 7a Questão (Ref.: 201602955907) Fórum de Dúvidas (0) Saiba (0) 
 
__________________________ é uma lista linear em que a alocação de memória pode ser estática, e que a 
forma de armazenamento é contígua ou sequencial na memória. Usamos este tipo de lista quando se tem em 
mente um tamanho pré-definido, ou seja, quando se sabe até onde a lista pode crescer. 
 
 
Lista Linear Não Sequencial 
 
Lista Não Linear 
 
Lista Linear Não Alocada 
 Lista Linear Sequencial 
 
Lista Linear de Alocação de Memória 
 
 
 
 8a Questão (Ref.: 201602391660) 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 
 
remoção 
 
ordenação 
 
inclusão 
 
underflow 
 
/////////////////////// Prova A6 /////////////////////////////////////////////////////// 
 1a Questão (Ref.: 201602596881) Fórum de Dúvidas (0) Saiba (0) 
 
 
 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 
 
fila 
 
grafo 
 
lista 
 
árvore 
 
 Gabarito Comentado 
 
 
 2a Questão (Ref.: 201603005749) Fórum de Dúvidas (0) Saiba (0) 
 
Considere dados sendo manipulados em uma pilha sequencial em que as operações possíveis são: inserção - 
push(novo valor) ou remoção - pop(). 
 
Se realizarmos a seguinte sequencia de operações: 
 
push(A),push(B),push(C),pop(),pop(),push(D),pop(),pop(). 
 
Pode-se dizer que o interior da pilha apresenta-se: 
 
 
Com os dados A e D 
 Vazio 
 
Com os dados A e B 
 
Apenas com o dado A 
 
Apenas com o dado D 
 
 
 
 3a Questão (Ref.: 201602383744) Fórum de Dúvidas (0) Saiba (0) 
 
No contexto de estrutura de dados, uma pilha é: 
 
 
uma lista do tipo FIFO. 
 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 LILO. 
 
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. 
 
 Gabarito Comentado 
 
 
 4a Questão (Ref.: 201602383733) Fórum de Dúvidas (0) Saiba (0) 
 
A técnica LIFO (last in first out), utilizada em programação estruturada, é fundamentada no conceito de: 
 
 
fila 
 
loop 
 
ponteiro 
 pilha 
 
array 
 
 Gabarito Comentado 
 
 
 5a Questão (Ref.: 201602375167) Fórum de Dúvidas (0) Saiba (0) 
 
Marque a opção que representa uma característica CORRETA a respeito da estrutura de dados pilha. 
 
 
Não é possível criar uma pilha utilizando vetores. 
 O último item inserido é o primeiro item a ser retirado. 
 
Os acessos aos itens ocorrem de forma aleatória. 
 
O último item inserido é o último item a ser retirado. 
 
O primeiro item inserido é o primeiro a ser retirado. 
 
 Gabarito Comentado 
 
 
 6a Questão (Ref.: 201603156685) Fórum de Dúvidas (0) Saiba (0) 
 
Assumindo que estamos com uma estrutura de dados do tipo LIFO, as operações abaixo vão resultar em que 
elementos na mesma: PUSH(2), PUSH(3), PUSH(4), POP(), POP(), PUSH(5), PUSH(7), POP() 
 
 
2 4 7 
 2 5 
 
2 3 4 
 
5 7 
 
3 4 5 
 
 Gabarito Comentado Gabarito Comentado Gabarito Comentado 
 
 
 7a Questão (Ref.: 201602459305) 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: 
 
 Last In First Out (LIFO). 
 
De dividir para conquistar. 
 
Da localidade de referência. 
 
Da indiferença. 
 
First In First Out (FIFO). 
 
 Gabarito Comentado 
 
 
 8a Questão (Ref.: 201602459310) Fórum de Dúvidas (0) Saiba (0) 
 
Respeitando as ordens de inserção e de retirada dos dados, uma estrutura de: 
 
 
fila é também denominada FIFO ou LIFO. 
 
fila é também denominada FIFO ou FILO. 
 
pilha é também denominada FIFO ou FILO. 
 pilha é também denominada LIFO ou FILO. 
 
fila é também denominada LIFO ou LILO. 
 
/////////////////////// Prova A7 /////////////////////////////////////////////////////// 
 1a Questão (Ref.: 201602391697) 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 FIFO de organização de dados. 
 
O sistema I adota o esquema FIFO de organização de dados e o II, o esquema LIFO. 
 
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. 
 
Tanto o sistema I, quanto o II, adota o esquema lista duplamente encadeada de organização de 
dados.2a Questão (Ref.: 201602983184) 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.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.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]; 
 } 
} 
 
 
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 Comentado 
 
 
 3a Questão (Ref.: 201602980487) Fórum de Dúvidas (0) Saiba (0) 
 
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: 
 
 
Um vetor é uma estrutura base correta para esta implementação, já que está imune a fenômenos como 
esgotamento de memória. 
 
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. 
 
A estrutura fila não sofre esgotamento de memória, isto ocorre com as pilhas já que implementam o 
algoritmo LIFO. 
 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. 
 
 Gabarito Comentado 
 
 
 4a Questão (Ref.: 201602983146) 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 enfileira 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 enfileirar(Fila &F, int codigo) { 
 if (F.fim == 99) 
 cout << "Não há espaço na firma para mais agentes. " << endl; 
 else 
 F.fim++; 
 F.v[F.fim] = codigo; 
} 
 
 
 void enfileirar(Fila F, int codigo) { 
 F.fim++; 
 F.v[F.fim] = codigo; 
} 
 
 
 
void enfileirar(Fila &F, int codigo) { 
 F.v[F.fim] = codigo; 
 F.fim++; 
} 
 void enfileirar(Fila F, int codigo) { 
 if (F.fim == 100) 
 cout << "Não há espaço na firma para mais agentes. " << endl; 
 else { 
 F.fim++; 
 F.v[F.fim] = codigo; 
 } 
} 
 
 void enfileirar(Fila &F, int codigo) { 
 if (F.fim == 99) 
 cout << "Não há espaço na firma para mais agentes. " << endl; 
 else { 
 F.fim++; 
 F.v[F.fim] = codigo; 
 } 
} 
 
 
 Gabarito Comentado 
 
 
 5a Questão (Ref.: 201602977312) Fórum de Dúvidas (0) Saiba (0) 
 
O que acontece quando se deseja inserir um elemento em uma FILA que já está cheia? 
 
 Overflow. 
 
Dequeue. 
 
A inserção é feita sem problema. 
 
Underflow. 
 
Enqueue. 
 
 Gabarito Comentado 
 
 
 6a Questão (Ref.: 201603005751) Fórum de Dúvidas (0) Saiba (0) 
 
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: 
 
 
Um vetor é uma estrutura base correta para esta implementação, já que está imune a fenômenos como 
esgotamento de memória. 
 
A estrutra sofrerá do fenômeno esgotamento de memória, mas se os dados estiverem ordenados isto 
não afetará a estrutura. 
 
A estrutura fila não sofre esgotamento de memória, isto ocorre com as pilhas já que implementam o 
algoritmo LIFO. 
 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. 
 
 
 
 7a Questão (Ref.: 201602980485) 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: 
 
 
X 
 C 
 
W 
 
A 
 
D 
 
 Gabarito Comentado Gabarito Comentado Gabarito Comentado 
 
 
 8a Questão (Ref.: 201602392158) Fórum de Dúvidas (0) Saiba (0) 
 
Qual das alternativas a seguir pode definir uma estrutura de fila? 
 
 
Entrada e saída de dados em qualquer local. 
 
Entrada e saída de dados pelo final. 
 
Entrada e saída de dados pelo início. 
 
Entrada de dados pelo início e saída pelo final. 
 Entrada de dados pelo final e saída pelo início. 
 
/////////////////////// Prova A8 /////////////////////////////////////////////////////// 
 1a Questão (Ref.: 201603055176) Fórum de Dúvidas (0) Saiba (0) 
 
As funções abaixo tem objetivos de: 
 
 
 A primeira faz uma busca retornando o valor do nó ou NULL quando não 
encontrado, já a segunda insere um novo nó no final da LSE; 
 A primeira faz uma busca retornando o endereço do nó ou NULL quando 
não encontrado, já a segunda insere um novo nó no final da LSE; 
 A primeira faz uma busca retornando a posição do nó ou NULL quando não 
encontrado, já a segunda insere um novo nó no inicio da LSE; 
 A primeira faz uma busca retornando o valor do nó ou NULL quando não 
encontrado, já a segunda insere um novo nó no inicio da LSE; 
 A primeira faz uma busca retornando o endereço do nó ou NULL quando 
não encontrado, já a segunda insere um novo nó no inicio da LSE; 
 
 
 
 2a Questão (Ref.: 201602968618) Fórum de Dúvidas (0) Saiba (0) 
 
Assinale a alternativa correta sobre alocação de memória. 
 
 
Uma das vantagens da alocação dinâmica sobre a alocação estática é que não é necessário fazer a 
liberação da memória utilizada. 
 
É correto afirmar que a alocação dinâmica de memória sempre leva a programas mais rápidos. 
 
A declaração de um vetor é um exemplo clássico de alocação dinâmica de memória. 
 
Alocação estática de memória refere-se ao processo de alocar memória com o uso de ponteiros. 
 Na alocação dinâmica de memória, a memória é alocada sob demanda, apenas quando necessário.3a Questão (Ref.: 201602392208) Fórum de Dúvidas (0) Saiba (0) 
 
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: 
 
 
Vetor 
 Ponteiro 
 
Endereço 
 
Matriz 
 
Variável 
 
 Gabarito Comentado 
 
 
 4a Questão (Ref.: 201602983201) Fórum de Dúvidas (0) Saiba (0) 
 
Considere uma lista simplesmente encadeada com placas de carros. Assinale a opção que, corretamente, imprime todas as 
placas da lista. Considere : 
struct no { 
 string placa; 
 struct no *link; 
}; 
no *p; //p aponta para o início da lista 
 
 
 
 void imprimir(no *p) { 
 while (p != NULL) { 
 cout << pplaca; 
 p = plink; 
} 
} 
 
 void imprimir(no *p) { 
 if (p != NULL) { 
 cout << pplaca; 
 p = plink; 
 } 
} 
 
 
void imprimir(no p) { 
 while (p != NULL) { 
 cout << pno; 
 p = plink; 
 } 
} 
 
 
 
void imprimir(no *p) { 
 while (p != NULL) { 
 cout << p.placa; 
 p = p.link; 
 } 
} 
 void imprimir(no *p) { 
 while (p != NULL) { 
 cout << pplaca; 
 } 
} 
 
 
 Gabarito Comentado 
 
 
 5a Questão (Ref.: 201602391688) Fórum de Dúvidas (0) Saiba (0) 
 
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: 
 
 
Binária. 
 
Combinada. 
 
Seqüencial. 
 Encadeada. 
 
Estática. 
 
 Gabarito Comentado 
 
 
 6a Questão (Ref.: 201603005757) Fórum de Dúvidas (0) Saiba (0) 
 
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->5.60; 
 pt->valor=5.60; 
 
pt->próximo.valor=5.60; 
 
pt->próximo->valor=5.60; 
 
pt.valor->5.60; 
 
 Gabarito Comentado 
 
 
 7a Questão (Ref.: 201602962045) Fórum de Dúvidas (0) Saiba (0) 
 
A linguagem C++ oferece quatro meios de criação de tipos de dados: matrizes, estruturas ou structs, uniões e 
classes. As estruturas, que passaremos a chamar simplesmente de structs, são tipos de variáveis que agrupam 
dados geralmente desiguais, enquanto matrizes são variáveis que agrupam dados similares. Devido a esta 
característica as structs são utilizadas para modelar nodos (nós) de estruturas dinâmicas. Portanto podemos 
afirmar que: 
 
 As estruturas dinâmicas são assim chamadas, pois podem fazer alocação de memória em tempo de 
execução e terem seus tamanhos alterados de acordo com a demanda. 
 
As estruturas dinâmicas são assim chamadas, pois podem fazer alocação de memória em tanto em 
tempo de execução quanto em tempo de compilação, mas não podem ter seus tamanhos alterados 
de acordo com a demanda. 
 
As estruturas dinâmicas são assim chamadas, pois não podem fazer alocação de memória em tempo 
de execução, mas mesmo assim conseguem ter seus tamanhos alterados de acordo com a demanda. 
 
As estruturas dinâmicas são assim chamadas, pois podem fazer alocação de memória em tempo de 
compilação e terem seus tamanhos alterados de acordo com a demanda. 
 
As estruturas dinâmicas são assim chamadas, pois podem fazer alocação de memória em tempo de 
compilação e entretanto seus tamanhos só são alterados na codificação de acordo com a demanda. 
 
 
 
 8a Questão (Ref.: 201602930744) Fórum de Dúvidas (0) Saiba (0) 
 
O conceito de ponteiros foi estudado em uma de nossas aulas. Sendo assim, leia atentamente as afirmativas 
abaixo e assinale a opção correta. 
 
I A variável ponteiro não precisa ser declarada. 
II A variável ponteiro armazena endereço. 
III Quanto se usa &nomeDaVariávelPonteiro com o comando cout, é exibido o endereço da variável 
apontada pela variável ponteiro. 
IV Quando se usa nomeDaVariávelPonteiro com o comando cout, é exibido o endereço da variável 
ponteiro. 
V Quando se usa *nomeDaVariávelPonteiro com o comando cout, é exibido o conteúdo da variável 
apontada pela variável ponteiro. 
 
 I, II e IV estão corretas 
 II e V estão corretas 
 I IV e V estão corretas 
 Somente a II está correta 
 IV e V estão corretas 
 
/////////////////////// Prova A9 /////////////////////////////////////////////////////// 
 1a Questão (Ref.: 201603097979) Fórum de Dúvidas (0) Saiba (0) 
 
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 
 RemoveNo 
 ListaNo 
 InsereNoFrente 
 BuscaNaLista 
 
 Gabarito Comentado 
 
 
 2a Questão (Ref.: 201602597134) Fórum de Dúvidas (0) Saiba (0) 
 
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. 
 só pode ter seus dados impressos no sentido do último nó para o primeiro nó. 
 insere-se em qualquer posição, antes ou após qualquer nó, visto que é dinâmica. 
 usa o critério FIFO, visto que é dinâmica. 
 usa o critério LIFO e é implementada usando-se listas encadeadas. 
 
 Gabarito Comentado 
 
 
 3a Questão (Ref.: 201602969790) Fórum de Dúvidas (0) Saiba (0) 
 
Assinale a característica que NÃO está relacionada às estruturas de dados encadeadas: 
 
 
Em geral, marca-se o último elemento com um ponteiro de valor NULL. 
 
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. 
 Consomem memória de maneira permanente, só sendo liberadas ao fim do programa. 
 
Cada elemento guarda pelo menos um ponteiro para outro elemento da estrutura. 
 
 
 
 4a Questão (Ref.: 201602935302) Fórum de Dúvidas (0) Saiba (0) 
 
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) 
 
 I e II estão corretas. 
 III e V estão corretas 
 III está correta 
 IV e V estão corretas. 
 I e IV estão corretas 
 
 Gabarito Comentado 
 
 
 5a Questão (Ref.: 201603063788) Fórum de Dúvidas (0) Saiba (0) 
 
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 e armazenar o resto da divisão do número por 2 no campo dado do 
novo 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. 
 
É 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ó. 
 É 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ó. 
 
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ó. 
 
 Gabarito Comentado 
 
 
 6a Questão (Ref.: 201603063666) Fórum de Dúvidas (0) Saiba (0) 
 
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. 
 
 
no *p -> new no; 
 
p *no -> new no; 
 
no p -> new no; 
 no *p=new no; 
 
p *no=new no; 
 
 Gabarito Comentado 
 
 
 7a Questão (Ref.: 201603014577) Fórum de Dúvidas (0) Saiba (0) 
 
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 a afirmação (3) é verdadeira 
 
Apenas a afirmação (1) é verdadeira 
 
Todas as afirmações são falsas 
 
Todas as afirmações são verdadeiras 
 Apenas as afirmações (1) e (3) são verdadeiras 
 
/////////////////////// Prova A10 /////////////////////////////////////////////////////// 
 1a Questão (Ref.: 201603056133) Fórum de Dúvidas (0) Saiba (0) 
 
Os registros também conhecidos como estruturas, são estruturas de dados do tipo heterogêneo, ou seja, 
permitem que valores de tipos diferentes possam ser armazenados em uma mesma estrutura. Analisando a 
estrutura abaixo, a mesma pode ser utilizada para qual tipo de estrutura de dados, marque a alternativa 
correta. 
struct nomeRegistro{ 
 int info; 
 struct nomeRegistro* ant; 
 struct nomeRegistro* prox; 
}; 
typedef struct nomeRegistro NOMEREGISTRO; 
 
 
Lista encadeada 
 
Matriz 
 Lista duplamente encadeada 
 
Pilha 
 
Fila 
 
 
 
 2a Questão (Ref.: 201603039722) Fórum de Dúvidas (0) Saiba (0) 
 
 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; 
 if (p != NULL) 
 p.elink = novo; 
 p = novo; 
 
 
 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->elink = NULL; 
 if (p != 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; 
 
 Gabarito Comentado 
 
 
 3a Questão (Ref.: 201602604738) Fórum de Dúvidas (0) Saiba (0) 
 
Observe a struct, definida globalmente, e um trecho de uma função que manipula 
uma Lista Duplamente Encadeada. 
struct listaDE 
{ 
 int info; 
 struct listaDE* ant; 
 struct listaDE* prox; 
}; 
... 
listaDE* novo = new listaDE; 
novo->info = valor; 
novo->prox = LISTA; 
novo->ant = NULL; 
Assinale a alternativa que apresenta o protótipo dessa função 
 
 listaDE *remove(listaDE *LISTA, int valor); 
 listaDE *busca (listaDE *LISTA, int valor); 
 void exibeIpF(listaDE *LISTA); 
 listaDE *insereInicio(listaDE *LISTA, int valor); 
 listaDE *insereFim(listaDE *LISTA, int valor); 
 
 Gabarito Comentado 
 
 
 4a Questão (Ref.: 201602392076) Fórum de Dúvidas (0) Saiba (0) 
 
Uma estrutura de dados em lista duplamente encadeada permite na cadeia movimentos para 
 
 
frente, apenas. 
 
trás, apenas. 
 
cima e para baixo ou para frente e para trás. 
 frente e para trás, apenas. 
 
cima e para baixo, apenas. 
 
 Gabarito Comentado 
 
 
 5a Questão (Ref.: 201603005760) Fórum de Dúvidas (0) Saiba (0) 
 
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 inserem novo nodo, após o nodo apontado pelo ponteiro p. 
 
As operações possibilitam o percurso do ponteiro p da direita para esquerda. 
 As operações removem o nodo apontado pelo ponteiro p. 
 
As operações possibilitam a busca de um nodo apontado pelo ponteiro p. 
 
 Gabarito Comentado 
 
 
 6a Questão (Ref.: 201602597156) Fórum de Dúvidas (0) Saiba (0) 
 
Com relação à lista duplamente encadeada, é correto afirmar que : 
 
 Não pode haver remoções no meio da lista. 
 A lista pode ser percorrida com igual facilidade para a direita ou para a esquerda, 
pois existem dois ponteiros. 
 Não pode ser vazia. 
 A lista precisa ter sempre um ponteiro apontando para o 1º. nó 
 Consome menos memória do que uma lista simplesmente encadeada, se 
tivermos uma mesma aplicação. 
 
 Gabarito Comentado 
 
 
 7a Questão (Ref.: 201602594478) Fórum de Dúvidas (0) Saiba (0) 
 
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 removem o nodo apontado pelo ponteiro p. 
 
As operações inserem novo nodo, após o nodo apontado pelo ponteiro p. 
 
As operações possibilitam o percurso do ponteiro p da esquerdapara 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. 
 
 
 
 8a Questão (Ref.: 201602391860) Fórum de Dúvidas (0) Saiba (0) 
 
Em uma lista linear duplamente encadeada. 
 
 
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. 
 
O ponteiro do "primeiro" nó não é NULL, mas sim aponta de volta para o "primeiro" nó da lista, formando 
um ciclo. 
 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. 
 
 
/////////////////////// Prova A1 ///////////////////////////////////////////////////////

Outros materiais