Buscar

AVS 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 517 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 517 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 517 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

19/3/2014 BDQ Prova
file:///G:/Pessoal/Acad%EAmico/Est%E1cio%20de%20S%E1/2o%20Semestre/Estrutura%20de%20Dados/Provas/Prova%20AV_files/bdq_prova_resultado… 1/5
 
Avaliação: CCT0260_AV_ » ESTRUTURA DE DADOS
Tipo de Avaliação: AV
Aluno: N.A.
Professor: ALEXANDRE SOARES ALVES Turma: 9001/AA
Nota da Prova: 6,2 Nota de Partic.: 2 Data: 06/03/2014 16:32:59
 1a Questão (Ref.: 201304133913) Pontos: 0,0 / 0,5
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 é:
Registro
 Variável
Função
 Vetor
Matriz
 2a Questão (Ref.: 201304116897) Pontos: 0,5 / 0,5
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 primeiro item inserido é o primeiro a ser retirado.
Os acessos aos itens ocorrem de forma aleatória.
 O último item inserido é o primeiro item a ser retirado.
O último item inserido é o último item a ser retirado.
 3a Questão (Ref.: 201304133390) Pontos: 0,5 / 0,5
O que acontece ao se inserir uma informação quando já usamos toda a área disponível do vetor (topo = fim)?
remoção
inclusão
ordenação
underflow
 overflow
 4a Questão (Ref.: 201304133581) Pontos: 0,0 / 0,5
Marque a afirmativa correta para a "Inserção em lista linear sequencial ordenada".
 Consiste em adicionar um valor no vetor, alterando a ordem existente e ajustando o total de elementos.
19/3/2014 BDQ Prova
file:///G:/Pessoal/Acad%EAmico/Est%E1cio%20de%20S%E1/2o%20Semestre/Estrutura%20de%20Dados/Provas/Prova%20AV_files/bdq_prova_resultado… 2/5
 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 adicionar um valor no vetor, mantendo 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.
 5a Questão (Ref.: 201304133440) Pontos: 0,5 / 0,5
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:
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.
 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.
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.
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.
 6a Questão (Ref.: 201304133574) Pontos: 0,5 / 0,5
Qual a importância de se entender a "ordenação" de dados ?
A ordenação é a base na qual, muitos algoritmos são construídos. Entendendo a ordenação, tem-se
conhecimento para manter outros problemas.
A ordenação é a base na qual, muitos programas são construídos. Entendendo a ordenação, tem-se
conhecimento para manter outros problemas.
A ordenação é a base na qual, muitos sistemas são construídos. Entendendo a ordenação, tem-se
conhecimento para manter outros problemas.
 A ordenação é a base na qual, muitos algoritmos são construídos. Entendendo a ordenação, tem-se
conhecimento para resolver outros problemas.
A ordenação é a base na qual, muitos sistemas são construídos. Entendendo a ordenação, tem-se
conhecimento para resolver outros problemas.
 7a Questão (Ref.: 201304133927) Pontos: 1,0 / 1,0
Os métodos de ordenação são muito utilizados em estruturas de dados para facilitar a busca e a recuperação
posterior de itens de conjuntos ordenados. Existem vários métodos de ordenação, por este motivo, marque
corretamente a alternativa que apresenta o código do método de seleção.
int ordena(float v[], float valor, int n) {
 int ini = 0, fim = n-1, meio;
 while (ini >= fim){
 meio = ini/2;
 if (v[meio] == valor)
 return meio; 
 if (valor < v[meio])
 fim = meio -1;
 else
 ini = meio+1;
}
void ordena (int v[], int n){ 
 int i, j, aux; 
19/3/2014 BDQ Prova
file:///G:/Pessoal/Acad%EAmico/Est%E1cio%20de%20S%E1/2o%20Semestre/Estrutura%20de%20Dados/Provas/Prova%20AV_files/bdq_prova_resultado… 3/5
 int i, j, aux; 
 for (j = 1; j < n; j++) 
 for (i=j; i > 0 && v[i-1]> v[i]; i--){ 
 aux = v[i-1]; 
 v[i-1] = v[i]; 
 v[i] = aux; 
 } 
}
 void ordena(int v[], int n){ 
int i, j, menor, aux; 
for (j = 0; j < n-1; j++) { 
 for (i = j+1; i < n; i++) { 
 if (v[i] < v[j]) { 
 aux = v[j]; 
 v[j] = v[i]; 
 v[i] = aux; 
 } 
 } 
} 
}
int ordena(float v[], float valor, int n) { 
 int ini = 0, fim = n -1, meio; 
 while (ini <= fim){ 
 meio = (ini + fim)/2; 
 if (v[meio] == valor) 
 return meio; 
 if (valor < v[meio]) 
 fim = meio -1; 
 else 
 ini = meio+1; 
 } 
 return -1; 
}
int ordena(float v[], float valor, int n){
 for (int i = 0; i < n; i++)
 if (v[i] == valor)
 return i;
 return -1;
}
 8a Questão (Ref.: 201304136979) Pontos: 1,0 / 1,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 é:
Seleção
 Pesquisa binária
Pesquisa sequencial
Bolha
Inserção
 9a Questão (Ref.: 201304154856) Pontos: 0,7 / 1,5
Defina um tipo de dado (registro) capaz de armazenar as seguintes informações sobre um determinado cliente
de um banco: nome, CPF, RG, número da conta, data de abertura da conta, e saldo.
Com base neste tipo de dado, construa o trecho código em C++ que represente a leitura dos dados do cliente
feita pelo usuário.
19/3/2014 BDQ Prova
file:///G:/Pessoal/Acad%EAmico/Est%E1cio%20de%20S%E1/2o%20Semestre/Estrutura%20de%20Dados/Provas/Prova%20AV_files/bdq_prova_resultado… 4/5
Resposta: struct Data { int dia, mes, ano; } struct Cliente { char nome[40]; long long int cpf, rg, numero_conta;
Data data_abertura; float saldo; } void exibirDadosCliente(Cliente &clienteX) { cout<<"Nome Cliente: " <<
clienteX.nome << "\n"; cout<<"CPF:" << clienteX.cpf << "\n"; cout<<"RG:" << clienteX.rg << "\n";
cout<<"Numero Conta:" << clienteX.numero_conta << "\n"; cout<<"Data Abertura:" <<
clienteX.data_abertura.dia << "\"<< clienteX.data_abertura.mes << "\" << clienteX.data_abertura.ano <<
"\n"; cout<<"Saldo:"<<clienteX.saldo; }
Gabarito:
struct ClienteBanco{
 string nome;
 string cpf;
 int rg;
 int numConta;
 double saldo;
};
ClienteBanco cliente;
cin >> cliente.nome;
cin >> cliente.cpf;
cin >> cliente.rg;
cin >> cliente.saldo;
 10a Questão (Ref.: 201304154993) Pontos: 1,5 / 1,5
const int TAMMAX = 100;
struct TipoLista{
int qtde; // descritor que representa a quantidade de elementos na lista
int elemt[TAMMAX];
};
Fundamento no tipo de dado(registro) acima que representa uma implementação de uma lista linear sequencial.
Construa um procedimento para adicionar um dado no final da lista.
A lista e o dado serão passados por parâmetro. Usar o mecanismo de passagem por referência se for
necessário.
Resposta: void adicionarElemento(TipoLista &lista, int valor) { if (lista.qtde == TAMMAX) { cout<<"Lista cheia,
impossivel adicionar"; return; } lista.elemt[lista.qtde++] = valor; }
Gabarito:
void addFinalLista ( TipoLista &lista, int dado ){
if(lista.qtde == TAMMAX){cout << "Lista Cheia."; }
else{ lista.elemt[lista.qtde] = dado;
 lista.qtde++;
 cout << "Dado adicionado com sucesso.";
} }
Período de não visualização da prova: desde 26/02/2014 até 18/03/2014.
19/3/2014 BDQ Prova
file:///G:/Pessoal/Acad%EAmico/Est%E1cio%20de%20S%E1/2o%20Semestre/Estrutura%20de%20Dados/Provas/Prova%20AV_files/bdq_prova_resultado… 5/5
Período de não visualização da prova: desde 26/02/2014 até 18/03/2014.
 
 
Av 2014 Estrutura de Dados 
Como é a lógica do LIFO? 
 
 
Resposta: Estrutura linear PILHA que usa a lógica LIFO. LIFO: Last In, último que entra é o primeiro a sair, First 
Out. Como uma pilha de pratos, o último colocado na pilha vai ser o primerio a ser retirado. 
 
 
Gabarito: O primeiro que entra na pilha é o último que sai. 
 
 
 
 2a Questão (Ref.: 201002160420) Pontos: 0,0 / 1,5 
Considere uma lista simplesmente encadeada não circular de inteiros e o tipo 
 
 struct no { 
 int dado; 
 struct no *link; 
 }; 
Faça uma função para inverter a lista e retornar o ponteiro para o início da lista resultante. 
Protótipo : no *inverter(no *ini); //ini aponta para o início da lista 
 
 
Resposta: 
 
 
Gabarito: no *inverter ( no *ini) // ini é um ponteiro para o início da lista { no *a, *b, *c; a = ini; b = NULL; 
while (a != NULL) { c = b; b = a; a = a->link; b->link = c; } ini = b; return(ini); } /* fim da função */ 
 
 
 
 3a Questão (Ref.: 201002135330) Pontos: 0,5 / 0,5 
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 é: 
 
 
Inserção 
 
Pesquisa sequencial 
 
Bolha 
 
Seleção 
 
Pesquisa binária 
 
 
 
 4a Questão (Ref.: 201002131935) Pontos: 0,0 / 0,5 
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 adicionar um valor no vetor, mantendo 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. 
 
 
 
 5a Questão (Ref.: 201002131910) Pontos: 0,5 / 0,5 
Estão entre algumas das possíveis formas de se estruturar dados: 
 
 
Grafos, lista ordenada, vetores. 
 
Grafos, lista ordenada, algoritmos. 
 
Algoritmos, lista ordenada, vetores. 
 
Grafos, algoritmos, fila. 
 
Lista encadeada, vetores, algoritmos. 
 
 
 
 6a Questão (Ref.: 201002132269) Pontos: 1,0 / 1,0 
As listas encadeadas podem ser elaboradas de duas formas utilizando uma técnica de encadeamento 
simplesmente ou encadeamento duplo. O que difere uma lista simplesmente encadeada de uma lista 
duplamente encadeada? 
 
 
Em uma lista duplamente encadeada cada nó aponta para nó seguinte e para o primeiro nó da fila. 
 
Em uma lista duplamente encadeada, cada nó aponta para um nó enquanto a lista simplesmente 
encadeada aponta para mais de um nó. 
 
Em uma lista duplamente encadeada cada nó aponta para nó seguinte. 
 
Em uma lista simplesmente encadeada cada nó aponta para nó seguinte e para o nó anterior. 
 
Em uma lista simplesmente encadeada cada nó aponta para um único nó enquanto a lista duplamente 
encadeada aponta para mais de um nó. 
 
 
 
 7a Questão (Ref.: 201002337044) Pontos: 0,0 / 0,5 
 Considere uma pilha sequencial P com capacidade para n elementos. 
 Sabendo que P é do tipo Pilha definido a seguir, marque a opção que corretamente 
implementa a operação de empilhamento, considerando que o topo da pilha recebeu -1 na 
inicialização. 
 
struct Pilha { 
 int v[n], topo; 
 }; 
 
 
 void empilhar(Pilha P, int valor) { 
 if (P.topo == n) 
 cout << "Pilha cheia."; 
 else { 
 P.topo++; 
 P.v[P.topo] = valor; 
 } 
} 
 void empilhar(Pilha P, int valor) { 
 if (P.topo == n - 1) 
 cout << "Pilha cheia."; 
 else { 
 P.topo++; 
 P.v[P.topo] = valor; 
 } 
} 
 void empilhar(Pilha &P, int valor) { 
 if (P.topo == n - 1) 
 cout << "Pilha cheia."; 
 else { 
 P.topo++; 
 P.v[P.topo] = valor; 
 } 
} 
 void empilhar(Pilha &P, int valor) { 
 if (P.topo == n - 1) 
 cout << "Pilha cheia."; 
 else 
 P.v[P.topo] = valor; 
} 
 
 void empilhar(Pilha &P, int valor) { 
 if (topo == n - 1) 
 cout << "Pilha cheia."; 
 else { 
 topo++; 
 v[topo] = valor; 
 } 
} 
 
 
 
 8a Questão (Ref.: 201002131742) Pontos: 0,5 / 0,5 
O que acontece quando tentamos retirar um elemento de uma pilha que já está vazia? 
 
 
Ordenação. 
 
Remoção. 
 
Underflow. 
 
Overflow. 
 
Inclusão. 
 
 
 
 9a Questão (Ref.: 201002334547) Pontos: 1,0 / 1,0 
Seja uma lista encadeada cujos nodos são formados pelo seguinte tipo de dado: 
struct empregado{ 
 long int matricula; 
 float salario; 
 empregado *proximo; 
}; 
 
Suponha que o ponteiro pont tenha o endereço de um nodo da lista, o qual se deseja atribuir um novo 
valor para o campo salario. Marque a alternativa que corretamente altera o valor do campo salario 
para 5000.00. 
 
 
pont.salario=5000.00; 
 
pont.empregado.salario=5000.00 
 
pont.empregado->salario=5000.00; 
 
salario=5000.00; 
 
pont->empregado->salario=5000.00; 
 
 
 
 10a Questão (Ref.: 201002123813) Pontos: 0,5 / 0,5 
Assinale a alternativa que apresenta duas formas de passagem de parâmetros para uma rotina ou função: 
 
 
Por memória e por disco.Por teste e por reforço. 
 
Por valor e por referência 
 
Por reforço e por referência. 
 
Por inferência e por valor. 
 
 
 
 1a Questão (Ref.: 201311074053) Pontos: 1,5 / 1,5 
Como é a lógica do FIFO? 
 
 
Resposta: 
 
 
Gabarito: O primeiro que entra na fila é o primeiro que sai. 
 
 
 
 2a Questão (Ref.: 201311064546) Pontos: 1,5 / 1,5 
Defina um tipo de dado (registro) capaz de armazenar as seguintes informações sobre 
um determinado cliente de um banco: nome, CPF, RG, número da conta, data de 
abertura da conta, e saldo. 
Com base neste tipo de dado, construa o trecho código em C++ que represente a leitura 
dos dados do cliente feita pelo usuário. 
 
 
Resposta: 
 
 
Gabarito: 
struct ClienteBanco{ 
 string nome; 
 string cpf; 
 int rg; 
 int numConta; 
 double saldo; 
}; 
ClienteBanco cliente; 
cin >> cliente.nome; 
cin >> cliente.cpf; 
cin >> cliente.rg; 
cin >> cliente.saldo; 
 
 
 
 3a Questão (Ref.: 201311035149) Pontos: 0,5 / 0,5 
Diferentes tipos de estrutura de dados são adequadas a diferentes tipos de aplicação e 
algumas são altamente especializadas, destinando-se a algumas tarefas específicas. 
Dessa forma a definição de Estrutura de Dados está expressa na alternativa: 
 
 
É um modo de distribuição e organização de dados em uma rede de computador de 
modo que possam ser usados de modo eficiente. 
 É um modo particular de armazenamento e organização de dados em um 
computador de modo que possam ser usados de modo eficiente. 
 
São os nomes dados as variáveis na montagem de uma rotina. 
 
É um modo de deleção de dados em um computador. 
 
É um modo de utilização de dados nos programas de computador. 
 
 
 
 4a Questão (Ref.: 201311245867) Pontos: 0,5 / 0,5 
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 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 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 e apresenta como resultado o valor 7.0 
 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. 
 
 
 
 5a Questão (Ref.: 201311043276) Pontos: 0,5 / 0,5 
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. 
 
É 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 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. 
 
 
 
 6a Questão (Ref.: 201311046673) Pontos: 0,5 / 0,5 
Existem vários tipos de algoritmos para realizar a ordenação dos elementos, onde um 
algoritmo de ordenação deve rearranjar o vetor de forma a estabelecer uma ordem entre 
os elementos. Marque a alternativa correta que cita o algoritmo cuja descrição é: 
"considera cada elemento uma vez inserindo-o em seu lugar correto entre os elementos 
que já estão em ordem". E o seu passo a passo pode ser descrito como: "o elemento é 
inserido entre os ordenados movendo-se os elementos maiores que ele uma posição para 
a direita e posteriormente inserindo-o na posição vaga". 
 
 
MergeSort 
 
QuickSort 
 Inserção 
 
Seleção 
 
Bolha 
 
 
 
 7a Questão (Ref.: 201311043262) Pontos: 0,5 / 0,5 
 
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: 
 
 
c - a - a - b - c - b 
 
a - a - a - b - c - b 
 
a - c - a - b - c - a 
 
 
a - b - a - c - c - b 
 
b - b - a - c - c - c 
 
 
 
 8a Questão (Ref.: 201311248383) Pontos: 0,5 / 0,5 
 Considere uma pilha sequencial P com capacidade para n elementos. 
 Sabendo que P é do tipo Pilha definido a seguir, marque a opção que 
corretamente implementa a operação de empilhamento, considerando que o 
topo da pilha recebeu -1 na inicialização. 
 
struct Pilha { 
 int v[n], topo; 
 }; 
 
 
 void empilhar(Pilha P, int valor) { 
 if (P.topo == n - 1) 
 cout << "Pilha cheia."; 
 else { 
 P.topo++; 
 P.v[P.topo] = valor; 
 } 
} 
 void empilhar(Pilha P, int valor) { 
 if (P.topo == n) 
 cout << "Pilha cheia."; 
 else { 
 P.topo++; 
 P.v[P.topo] = valor; 
 } 
} 
 void empilhar(Pilha &P, int valor) { 
 if (P.topo == n - 1) 
 cout << "Pilha cheia."; 
 else 
 P.v[P.topo] = valor; 
} 
 
 void empilhar(Pilha &P, int valor) { 
 if (topo == n - 1) 
 cout << "Pilha cheia."; 
 else { 
 topo++; 
 v[topo] = valor; 
 } 
} 
 void empilhar(Pilha &P, int valor) { 
 if (P.topo == n - 1) 
 cout << "Pilha cheia."; 
 else { 
 P.topo++; 
 P.v[P.topo] = valor; 
 } 
} 
 
 
 
 9a Questão (Ref.: 201311043094) Pontos: 1,0 / 1,0 
Complete os espaços na afirmativa abaixo e assinale a alternativa que apresenta as 
respostas corretas: O escalonamento .................... é do tipo.................., em que o 
processo que chegar primeiro na fila de pronto é o escolhido para ser executado. 
 
 
SJF (Shortest-Job-First), preemptivo. 
 
Circular, não-preemptivo. 
 FIFO, não-preemptivo. 
 
LIFO, não-preemptivo. 
 
Por prioridades, preemptivo. 
 
 
 
 10a Questão (Ref.: 201311256158) Pontos: 1,0 / 1,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 *busca (listaDE *LISTA, int valor); 
 void exibeIpF(listaDE *LISTA); 
 listaDE *insereInicio(listaDE *LISTA, int valor); 
 listaDE *insereFim(listaDE *LISTA, int valor); 
 listaDE *remove(listaDE *LISTA, int valor); 
 
 1a Questão (Ref.: 201401618127) Pontos: 0,5 / 0,5 
 
 
 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 executa perfeitamente independente da ordemdas 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. 
 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. 
 
 
 
 2a Questão (Ref.: 201401378179) Pontos: 0,5 / 0,5 
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 
 
9 e 10 
 
10 e 10 
 
1024 e 512 
 512 e 1024 
 
 
 
 3a Questão (Ref.: 201401618174) Pontos: 0,0 / 0,5 
Pilhas são estruturas de dados que se utilizam do algoritmo LIFO, last in first 
out, ou melhor, o último a entrar é o primeiro a sair. Desta forma pode-se 
abstrair que existe apenas um local para a saída e a entrada de dados, ou 
seja o topo da pilha. 
Supondo que uma pilha seja implementada por um vetor de inteiros de 
tamanho 10 e que exista uma variável global chamada topo para indexar 
esta posição de entrada e saída de dados e ainda quando esta variável 
assume o valor -1 indica que a pilha está vazia. Marque a opção que melhor 
ilustra a função de exclusão de um dado do vetor pilha, supondo ainda que o 
vetor tenha sido declarado inicialmente de forma global. 
 
 void pop(){ if(pilha != -1) pilha[topo];} 
 void pop(){ if(topo != -1) pilha[topo-1];} 
 void pop(){ if(pilha != -1) pilha[topo-1];} 
 void pop(){ if(topo != -1) topo++;} 
 void pop(){ if(topo != -1) topo--;} 
 
 
 
 4a Questão (Ref.: 201401378334) Pontos: 0,0 / 0,5 
Analisando o trecho do algoritmo abaixo, 
 
pode-se afirmar que se trata de uma operação de: 
 
 Inserção de um elemento em uma estrutura LIFO 
 
Remoção de um elemento de uma estrutura LIFO 
 
Remoção de um elemento de uma estrutura FIFO 
 Inserção de um elemento em uma estrutura FIFO 
 
Exibição de um elemento em uma estrutura LIFO 
 
 
 
 5a Questão (Ref.: 201401583235) Pontos: 1,0 / 1,0 
 
 
 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.fim++; 
 F.v[F.fim] = valor; 
 } 
} 
 void enfileirar(Fila &F, int valor) { 
 if (fim == n - 1) 
 cout << "Fila cheia\n"; 
 else { 
 fim++; 
 v[fim] = valor; 
 } 
} 
 void enfileirar(Fila &F, int valor) { 
 if (F.fim == n - 1) 
 cout << "Fila cheia\n"; 
 else 
 F.v[F.fim] = valor; 
 } 
 
 
 
 6a Questão (Ref.: 201401377979) Pontos: 0,5 / 0,5 
Marque a afirmativa correta para a "inserção incremental". 
 
 
A técnica é boa quando os dados ficam uniformemente distribuídos entre os seus compartimentos. 
 
É um tipo de ordenação por intercalação 
 
Os pivôs são escolhidos aleatoriamente. 
 Consiste em adicionar um valor no vetor, mantendo a ordem existente e ajustando o total de elementos. 
 
É um tipo de sequenciação por intercalação. 
 
 
 
 7a Questão (Ref.: 201401378318) Pontos: 1,0 / 1,0 
As listas encadeadas podem ser elaboradas de duas formas utilizando uma técnica de encadeamento 
simplesmente ou encadeamento duplo. O que difere uma lista simplesmente encadeada de uma lista 
duplamente encadeada? 
 
 
Em uma lista duplamente encadeada cada nó aponta para nó seguinte. 
 Em uma lista simplesmente encadeada cada nó aponta para um único nó enquanto a lista duplamente 
encadeada aponta para mais de um nó. 
 
Em uma lista duplamente encadeada cada nó aponta para nó seguinte e para o primeiro nó da fila. 
 
Em uma lista duplamente encadeada, cada nó aponta para um nó enquanto a lista simplesmente 
encadeada aponta para mais de um nó. 
 
Em uma lista simplesmente encadeada cada nó aponta para nó seguinte e para o nó anterior. 
 
 
 
 8a Questão (Ref.: 201401381147) Pontos: 0,0 / 0,5 
No programa abaixo, diga em que área de memória serão alocados os elementos de dados y e r, 
respectivamente. 
#include 
using namespace std; 
int x, y; 
float media( float a, float b ) 
{ float tmp; 
tmp = (a + b ) / 2.0; 
return ( tmp ); 
} 
int main() 
{ 
float r; 
cout<<"Informe 2 valores: "; 
cin>>x>> y; 
r = media( x, y ); 
cout<<"\nMedia = "<< r<<"\n"; 
system ("pause"); 
} 
 
 ( ) área de dados globais / área de pilha 
 
( ) área de registro / área de dados globais 
 
( ) área de registro / área de pilha 
 ( ) área de dados globais / área de registro 
 
( ) área de pilha / área de registro 
 
 
 
 9a Questão (Ref.: 201401399393) Pontos: 0,0 / 1,5 
const int TAMMAX = 100; 
struct TipoLista{ 
int qtde; // descritor que representa a quantidade de elementos na lista 
int elemt[TAMMAX]; 
}; 
Fundamento no tipo de dado(registro) acima que representa uma implementação de uma lista linear sequencial. 
Construa um procedimento para adicionar um dado no final da lista. 
A lista e o dado serão passados por parâmetro. Usar o mecanismo de passagem por referência se for 
necessário. 
 
 
Resposta: int inserir(&lista[], int tam, int v){ if(lista.qtde == tam-1){ cout << 'Tamanho maximo atingido'; 
return 0; } else { lista.qtde ++; lista.v[lista.qtde] = v; return 1; } } 
 
 
Gabarito: 
void addFinalLista ( TipoLista &lista, int dado ){ 
if(lista.qtde == TAMMAX){cout << "Lista Cheia."; } 
else{ lista.elemt[lista.qtde] = dado; 
 lista.qtde++; 
 cout << "Dado adicionado com sucesso."; 
} } 
 
 
Fundamentação do(a) Professor(a): Cabeçalho da função está errado // não existe tam // Não existe membro v 
// NADA posso apoveitar 
 
 
 
 10a Questão (Ref.: 201401399256) Pontos: 0,5 / 1,5 
Defina um tipo de dado (registro) capaz de armazenar as seguintes informações sobre um determinado cliente 
de um banco: nome, CPF, RG, número da conta, data de abertura da conta, e saldo. 
Com base neste tipo de dado, construa o trecho código em C++ que represente a leitura dos dados do cliente 
feita pelo usuário. 
 
 
Resposta: Definição do registro: struct registro{ char nome[40]; // nome list d char long long CPG; // guardar 
como inteiro longo int RG; // inteiro int nConta; // conta guardada como inteiro, sem ponto ou '-' char 
dtAbertura[9] // data guardada como list de char 01/01/01 float saldo; } -------------- Leitura: cout << 'Nome: 
' << dado.nome << ', CPF: ' << dado.CPF << ', RG: ' << dado.RG << ', Num. da Conta: ' << dado.nConta << 
', Dt. de Abertura: ' << dado.dtAbertura << ' com SALDO: ' << dado.saldo; 
 
 
Gabarito: 
struct ClienteBanco{ 
 string nome; 
 string cpf; 
 int rg; 
 int numConta; 
 double saldo; 
}; 
ClienteBanco cliente; 
cin >> cliente.nome; 
cin >> cliente.cpf; 
cin >> cliente.rg; 
cin >> cliente.saldo; 
 
 
Fundamentação do(a) Professor(a): A struct está correta.Otrecho entrada, não 
 
 
 
 Fechar
 
Avaliação: CCT0260_AV_201307185967 (AG) » ESTRUTURA DE DADOS 
Tipo de Avaliação: AV 
Aluno: 201307185967 - RENATO GOMES CHAVES 
Professor: JANE TAVARES ALVAREZ DA SILVA Turma: 9002/AA 
Nota da Prova: 3,5 Nota de Partic.: 1 Data: 30/05/2014 18:55:07 
 
 
 1a Questão (Ref.: 201307263127) Pontos: 1,5 / 1,5 
Como é a lógica do FIFO? 
 
 
 
Resposta: Na lógica FIFO (First In First Out), o primeiro dado a entrar, é o primeiro a sair. A chamada fila. 
 
 
Gabarito: O primeiro que entra na fila é o primeiro que sai. 
 
 
 
 2a Questão (Ref.: 201307439114) Pontos: 0,0 / 1,5 
 Faça uma função em C++ para criar uma lista duplamente encadeada com um nó e 
armazenar neste nó o valor 100. Note que deverá ser retornado o ponteiro para o nó 
criado. Considere 
 struct nodupla { 
 int dado; 
 struct *dlink, *elink; 
 }; 
 
e o seguinte protótipo : nodupla *cria(); 
 
 
 
Resposta: 
 
 
Gabarito: 
nodupla *cria() 
{ 
 nodupla *novo; 
 
 novo = new nodupla; 
 novo->dado = 100; 
 novo->elink = novo->dlink = NULL; 
 return novo; 
 
} 
 
 
 
 
 3a Questão (Ref.: 201307437408) Pontos: 0,0 / 0,5 
 
 
 
 uma mistura dos métodos de ordenação por inserção e bubblesort. 
 por seleção. 
 bubblesort. 
 por inserção. 
 
 uma mistura dos métodos de ordenação por seleção e por inserção. 
 
 
 
 4a Questão (Ref.: 201307232698) Pontos: 0,5 / 0,5 
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 FIFO 
 Inserção de um elemento em uma estrutura FIFO 
 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 
 
 
 
 5a Questão (Ref.: 201307232534) Pontos: 0,5 / 0,5 
Com relação as listas lineares sequenciais: 
I - Uma lista linear sequencial é um vetor em linguagens estruturadas, também chamado de array. 
II - Um elemento de uma lista linear sequencial pode ser acessado diretamente através de um índice. 
III - Uma lista linear sequencial pode ter elementos de um mesmo tipo, ou de tipos diferentes. 
 
 
 Apenas as afirmações I e III estão corretas. 
 Apenas as afirmações I e II estão corretas. 
 Apenas a afirmação I está correta. 
 Apenas as afirmações II está corretas. 
 Apenas as afirmações II e III estão corretas. 
 
 
 
 6a Questão (Ref.: 201307232693) Pontos: 0,0 / 1,0 
As estruturas de dados são importantes para a programação porque facilitam a pesquisa, pois permitem a 
ordenação dos dados de forma crescente ou decrescente. Dessa forma, assinale a alternativa correta que define 
um tipo de dado estruturado. 
 
 
 São tipos de dados indivisíveis. 
 Também são denominados tipos primitivos, não é possível decompor em partes menores. 
 Consiste da definição do conjunto de valores (denominado domínio) que uma variável pode assumir ao 
longo da execução de um programa. 
 Permitem agregar mais do que um valor em uma variável, existindo uma relação estrutural entre seus 
elementos. 
 Podem armazenar apenas um valor de cada vez, se algum valor for atribuído o anterior é apagado. 
 
 
 
 7a Questão (Ref.: 201307232597) Pontos: 0,5 / 0,5 
O resultado do concurso para o cargo de uma empresa está armazenado em um vetor, que contém em cada um 
de seus elementos o número de inscrição, o nome e a nota obtida pelo candidato. Este vetor está ordenado pelo 
número de inscrição. Para realização de uma consulta que, dado um número de inscrição, apresenta o nome e 
nota do candidato, um programador utilizou um algoritmo de busca que realiza sucessivas divisões no vetor, 
comparando o número de inscrição procurado com o número de inscrição do candidato posicionado no meio do 
vetor. Se o candidato posicionado do meio do vetor tiver o número de inscrição igual ao número de inscrição 
procurado, a busca termina com sucesso. Caso contrário, se candidato posicionado do meio do vetor tiver 
número de inscrição menor que o procurado, então a busca continua na metade posterior do vetor. E 
finalmente, se candidato posicionado do meio do vetor tiver número de inscrição maior que o procurado, a 
busca continua na metade anterior do vetor. O algoritmo utilizado pelo programador trata-se do método 
denominado busca: 
 
 
 randômica. 
 por contagem. 
 linear. 
 binária. 
 por comparação. 
 
 
 
 8a Questão (Ref.: 201307232679) Pontos: 0,0 / 1,0 
As estruturas de dados podem ser do tipo estática e dinâmica. As listas são estruturas parecidas com vetores 
podendo ser do tipo dinâmica. Entretanto, existem várias implementações de estruturas do tipo listas. Dessa 
forma, a estrutura que para o acesso de um dado, este precisa estar na saída, caso contrário, precisa remover 
os elementos a sua frente, é chamada de: 
 
 
 Fila 
 Matriz 
 Bolha 
 Pilha 
 Struct 
 
 
 
 9a Questão (Ref.: 201307434934) Pontos: 0,5 / 0,5 
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 II e IV estão corretas. 
 As alternativas I e III estão corretas. 
 As alternativas III e IV estão corretas. 
 As alternativas I e II estão corretas 
 
 
 
 10a Questão (Ref.: 201307440898) Pontos: 0,0 / 0,5 
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 
 
 
 
Observação: Eu, RENATO GOMES CHAVES, estou ciente de que ainda existe(m) 1 questão(ões) não respondida(s) ou salva(s) 
no sistema, e que mesmo assim desejo finalizar DEFINITIVAMENTE a avaliação. 
 
Data: 30/05/2014 19:15:51 
 
 
 Fechar 
 
Avaliação: CCT0174_AV_201101229446 » ESTRUTURA DE DADOS 
Tipo de Avaliação: AV 
Aluno: 201101229446 - ELISABETH DOS REIS BRAZ 
Professor: SERGIO DE OLIVEIRA SANTOS Turma: 9001/AA 
Nota da Prova: 8,0 Nota de Partic.: 2 Data: 11/06/2014 11:22:15 
 
 
 1a Questão (Ref.: 201101301584) Pontos: 1,5 / 1,5 
const int TAMMAX = 100; 
struct TipoLista{ 
int qtde; // descritor que representa a quantidade de elementos na lista 
int elemt[TAMMAX]; 
}; 
Fundamento no tipo de dado(registro) acima que representauma implementação de uma lista linear sequencial. 
Construa um procedimento para adicionar um dado no final da lista. 
A lista e o dado serão passados por parâmetro. Usar o mecanismo de passagem por referência se for 
necessário. 
 
 
Resposta: void addFinalLista ( TipoLista &lista, int dado ){if(lista.qtde == TAMMAX){cout << "Lista Cheia."; } 
else{ lista.elemt[lista.qtde] = dado; lista.qtde++; cout << "Dado adicionado com sucesso."; } } 
 
 
Gabarito: 
void addFinalLista ( TipoLista &lista, int dado ){ 
if(lista.qtde == TAMMAX){cout << "Lista Cheia."; } 
else{ lista.elemt[lista.qtde] = dado; 
 lista.qtde++; 
 cout << "Dado adicionado com sucesso."; 
} } 
 
 
 
 2a Questão (Ref.: 201101301447) Pontos: 1,5 / 1,5 
Defina um tipo de dado (registro) capaz de armazenar as seguintes informações sobre um determinado cliente 
de um banco: nome, CPF, RG, número da conta, data de abertura da conta, e saldo. 
Com base neste tipo de dado, construa o trecho código em C++ que represente a leitura dos dados do cliente 
feita pelo usuário. 
 
 
Resposta: struct BancoCliente { string nome[30], char cpf, char rg, int n_conta, int dt_abert, float saldo, } 
BancoCliente cliente; cin >> cliente.nome; cin >> cliente.cpf; cin >> cliente.rg; cin >> cliente.n_conta; cin 
>> cliente.dt_abert; cin >> cliente.saldo; 
 
 
Gabarito: 
struct ClienteBanco{ 
 string nome; 
 string cpf; 
 int rg; 
 int numConta; 
 double saldo; 
}; 
ClienteBanco cliente; 
cin >> cliente.nome; 
cin >> cliente.cpf; 
cin >> cliente.rg; 
cin >> cliente.saldo; 
 
 
 
 3a Questão (Ref.: 201101283338) Pontos: 0,5 / 0,5 
No programa abaixo, diga em que área de memória serão alocados os elementos de dados y e r, 
respectivamente. 
#include 
using namespace std; 
int x, y; 
float media( float a, float b ) 
{ float tmp; 
tmp = (a + b ) / 2.0; 
return ( tmp ); 
} 
int main() 
{ 
float r; 
cout<<"Informe 2 valores: "; 
cin>>x>> y; 
r = media( x, y ); 
cout<<"\nMedia = "<< r<<"\n"; 
system ("pause"); 
} 
 
 
( ) área de registro / área de pilha 
 
( ) área de pilha / área de registro 
 ( ) área de dados globais / área de pilha 
 
( ) área de dados globais / área de registro 
 
( ) área de registro / área de dados globais 
 
 
 
 4a Questão (Ref.: 201101482775) Pontos: 0,5 / 0,5 
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. 
 
 
5 e 5 
 
6 e 4 
 6 e 2 
 
6 e 1 
 
7 e 1 
 
 
 
 5a Questão (Ref.: 201101279982) Pontos: 0,5 / 0,5 
O que acontece quando tentamos retirar um elemento de uma pilha que já está vazia? 
 
 
Inclusão. 
 
Remoção. 
 
Overflow. 
 Underflow. 
 
Ordenação. 
 
 
 
 6a Questão (Ref.: 201101485284) Pontos: 0,5 / 0,5 
 Considere uma pilha sequencial P com capacidade para n elementos. 
 Sabendo que P é do tipo Pilha definido a seguir, marque a opção que corretamente 
implementa a operação de empilhamento, considerando que o topo da pilha recebeu -1 na 
inicialização. 
 
struct Pilha { 
 int v[n], topo; 
 }; 
 
 
 void empilhar(Pilha P, int valor) { 
 if (P.topo == n) 
 cout << "Pilha cheia."; 
 else { 
 P.topo++; 
 P.v[P.topo] = valor; 
 } 
} 
 void empilhar(Pilha P, int valor) { 
 if (P.topo == n - 1) 
 cout << "Pilha cheia."; 
 else { 
 P.topo++; 
 P.v[P.topo] = valor; 
 } 
} 
 void empilhar(Pilha &P, int valor) { 
 if (P.topo == n - 1) 
 cout << "Pilha cheia."; 
 else 
 P.v[P.topo] = valor; 
} 
 
 void empilhar(Pilha &P, int valor) { 
 if (topo == n - 1) 
 cout << "Pilha cheia."; 
 else { 
 topo++; 
 v[topo] = valor; 
 } 
} 
 void empilhar(Pilha &P, int valor) { 
 if (P.topo == n - 1) 
 cout << "Pilha cheia."; 
 else { 
 P.topo++; 
 P.v[P.topo] = valor; 
 } 
} 
 
 
 
 7a Questão (Ref.: 201101280537) Pontos: 1,0 / 1,0 
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 inteiro. 
 
Registro. 
 Ponteiros. 
 
Passagem por valor. 
 
Envio de valor. 
 
 
 
 8a Questão (Ref.: 201101272119) Pontos: 1,0 / 1,0 
Em relação às estruturas de dados, é correto afirmar: 
 
 
LIFO refere-se à estrutura de dados do tipo pilha, que nada mais é do que uma lista linear, duplamente 
encadeada. 
 
Nos sistemas operacionais, a execução dos processos concorrentes ocorre segundo os princípios da 
estrutura FILO. 
 
LIFO refere-se à estrutura de dados do tipo pilha, que nada mais é do que uma lista linear, sem disciplina 
de acesso, onde o primeiro elemento a entrar é o último a sair. 
 Guardar endereço de memória em "nós", normalmente identificados por previous ou next, é uma 
característica presente nas listas duplamente encadeadas. 
 
Um grafo com um único vértice e sem arestas é conhecido como dígrafo. 
 
 
 
 9a Questão (Ref.: 201101272050) Pontos: 0,5 / 0,5 
Diferentes tipos de estrutura de dados são adequadas a diferentes tipos de aplicação e algumas são altamente 
especializadas, destinando-se a algumas tarefas específicas. Dessa forma a definição de Estrutura de Dados está 
expressa na alternativa: 
 
 
É um modo de distribuição e organização de dados em uma rede de computador de modo que possam 
ser usados de modo eficiente. 
 É um modo particular de armazenamento e organização de dados em um computador de modo que 
possam ser usados de modo eficiente. 
 
É um modo de deleção de dados em um computador. 
 
É um modo de utilização de dados nos programas de computador. 
 
São os nomes dados as variáveis na montagem de uma rotina. 
 
 
 
 10a Questão (Ref.: 201101485213) Pontos: 0,5 / 0,5 
Com relação à struct, é correto afirmar que : 
 
 Cada elemento da struct é denominado membro ou campo, sendo que a struct pode 
armazenar elementos de tipos diferentes ou não. 
 Cada elemento da struct é chamado campo e cada campo deve ser, obrigatoriamente, 
de um tipo de dados distinto de outro campo. 
 Não é possível criar um vetor de structs, pois o vetor trabalha apenas com dados do 
mesmo tipo. 
 A struct é sempre definida dentro da main. 
 Cada elemento da struct é chamado componente. 
 
 
 
 Fechar 
 
Tipo de Avaliação: AV 
Professor: ANITA LUIZA MACIEL LOPES Turma: 9001/AA 
 
 
 1a Questão (Ref.: 201311078367) Pontos: 0,5 / 1,5 
 Os agentes Leo eLia receberam sequências de números de seus contatos. Para 
saberem qual o próximo passo da missão, precisam descobrir que números se repetem 
nas sequências recebidas por cada um. 
 Faça uma função que receba dois vetores v e w de inteiros como parâmetros e gere um vetor z, 
resultante da interseção entre v e w. 
Protótipo da função : 
 bool intersecao(int v[ ], int w[ ], int z [ ], int nv , int nw , int &n); 
onde nv: quantidade de elementos em v 
 nw : quantidade de elementos em w 
 n : quantidade de elementos no vetor z 
Note : 
• Inicialmente n vale zero. 
• Deverá ser retornado true (sucesso na interseção) ou false (fracasso na interseção). 
 
 
Resposta: bool intersecao(int v[], int w[], int z[], int nv, int nw, int &n){ bool teste; int x, i; n = 0; for (i = 0; i 
< nv; i++){ teste = false; for (x = 0; x < nw; x++){ if (v[i] == w[x]){ teste = true; break; } if (teste = false) 
z[n++] = v[i]; } } if (n > 0) return true; else return false; } 
 
 
Gabarito: 
bool intersecao(int v[], int w[], int inter[], int nv , int nw , int &n) { 
bool achou = false; 
for (int i = 0; i < nv; i++) 
for (int j = 0; j < nw; j++) 
if (v[i] == w[j]) { 
inter[n] = v[i]; 
achou = true; 
n++; 
} 
return achou; 
} 
 
 
 
 2a Questão (Ref.: 201311252522) Pontos: 0,0 / 1,5 
Listas encadeadas são estruturas cujos nodos são alocados dinamicamente, isto é em tempo de 
execução, na medida em que se necessite de mais espaço. Sendo um nodo representado por: 
struct elemento{ 
 string nome; 
 int idade; 
 elemento *prox; 
}; 
 
Escreva em linguagem C++ uma função de nome criaNodo( ), que crie um novo nodo para ser inserido 
no final da lista, e forneça um ponteiro com o endereço do nodo criado. 
 
 
Resposta: elemento * criaNodo(){ elemento el = new elemento; el.prox = null; return el; } 
 
 
Gabarito: 
elemento * criaNodo ( ) 
{ 
 elemento *p=new elemento; 
 p->prox=null; 
 return p; 
} 
 
 
 
 
 3a Questão (Ref.: 201311252482) Pontos: 0,0 / 0,5 
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 II 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. 
 
 
 
 4a Questão (Ref.: 201311041795) Pontos: 0,0 / 0,5 
Analise as seguintes afirmações: I. Na Passagem por Referência, o parâmetro que vai ser passado na chamada 
da função deve ser uma variável, de tal forma que uma alteração de valor neste parâmetro também altera a 
variável correspondente. II. Uma recursão consiste em uma função chamar ela mesma com argumentos sempre 
do mesmo valor. III. Considerando-se o escopo das variáveis, é correto afirmar que uma variável é dita global 
quando a sua passagem no momento da chamada de uma função se dá tanto por valor quanto por referência. 
Uma variável é dita local quando esta passagem se dá apenas por valor. Indique a opção que contenha todas as 
afirmações verdadeiras. 
 
 somente a alternativa I. 
 I e II. 
 
I e III. 
 
II e III. 
 
somente a alternativa e II. 
 
 
 
 5a Questão (Ref.: 201311252492) Pontos: 0,5 / 0,5 
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 elemento deste 
vetor. 
 
 vet[10].nota=5.7; 
 
aluno.vet[10].nota=5.7; 
 
aluno.vet[10]=5.7; 
 
vet[10].aluno.nota=5.7 ; 
 
vet[10]=aluno.5.7; 
 
 
 
 6a Questão (Ref.: 201311050140) Pontos: 0,0 / 0,5 
Analise o seguinte trecho de algoritmo de ordenação de dados, cujos elementos estão dispostos em um vetor de 
nome v com n elementos. 
... 
{ 
int i, j, aux; 
for (j = 1; j < n; j++) 
for (i=j; i > 0 && v[i-1]> v[i]; i--) { 
aux = v[i-1]; 
v[i-1] = v[i]; 
v[i] = aux; 
} 
} 
... 
Assinale o método ao qual o trecho de algoritmo pertence. 
 
 Bolha 
 Inserção 
 
Quicksort 
 
Heapsort 
 
Seleção 
 
 
 
 7a Questão (Ref.: 201311252499) Pontos: 0,0 / 0,5 
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. 
 
 Lista Sequencial 
 
Fila Sequencial 
 
Pilha Encadeada 
 Lista Encadeada 
 
Pilha Sequencial 
 
 
 
 8a Questão (Ref.: 201311255005) Pontos: 0,0 / 0,5 
 Considere uma pilha sequencial P com capacidade para n elementos. 
 Sabendo que P é do tipo Pilha definido a seguir, marque a opção que corretamente 
implementa a operação de empilhamento, considerando que o topo da pilha recebeu -1 na 
inicialização. 
 
struct Pilha { 
 int v[n], topo; 
 }; 
 
 
 void empilhar(Pilha &P, int valor) { 
 if (P.topo == n - 1) 
 cout << "Pilha cheia."; 
 else { 
 P.topo++; 
 P.v[P.topo] = valor; 
 } 
} 
 void empilhar(Pilha &P, int valor) { 
 if (P.topo == n - 1) 
 cout << "Pilha cheia."; 
 else 
 P.v[P.topo] = valor; 
} 
 
 void empilhar(Pilha P, int valor) { 
 if (P.topo == n - 1) 
 cout << "Pilha cheia."; 
 else { 
 P.topo++; 
 P.v[P.topo] = valor; 
 } 
} 
 void empilhar(Pilha &P, int valor) { 
 if (topo == n - 1) 
 cout << "Pilha cheia."; 
 else { 
 topo++; 
 v[topo] = valor; 
 } 
} 
 void empilhar(Pilha P, int valor) { 
 if (P.topo == n) 
 cout << "Pilha cheia."; 
 else { 
 P.topo++; 
 P.v[P.topo] = valor; 
 } 
} 
 
 
 
 9a Questão (Ref.: 201311050200) Pontos: 1,0 / 1,0 
Qual das alternativas a seguir pode definir uma estrutura de fila? 
 
 
Entrada e saída de dados pelo início. 
 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 final. 
 
Entrada e saída de dados em qualquer local. 
 
 
 
 10a Questão (Ref.: 201311050242) Pontos: 1,0 / 1,0 
O espaço necessário para a representação dos dados pode ser alocado à medida que se torne necessário, 
através da alocação dinâmica. Uma estruturaarmazenada através de encadeamento apresenta seus nodos 
alocados em posições aleatórias na memória, e não lado a lado. Dessa forma, existem várias vantagens no uso 
de representar os dados por encadeamento. Marque a alternativa correta que apresenta estas vantagens. 
 
 
Previsão de espaço físico, estruturas complexas, procedimentos menos intuitivos. 
 
Proteção de memória, transferência de dados, estruturas simples. 
 Compartilhamento de memória, maleabilidade e facilidade para inserção e remoção de componentes. 
 
Transferência de dados, gerenciamento de memória e procedimentos menos intuitivos. 
 
Acesso, representação, compartilhamento de memória. 
 
 
 
Período de não visualização da prova: desde 19/08/2014 até 04/09/2014. 
 
 
 
 
 
 
 Fechar 
 
Avaliação: CCT0260_AV_201307002641 (AG) » ESTRUTURA DE DADOS 
Tipo de Avaliação: AV 
Aluno: 201307002641 - LUIZ OTAVIO DE OLIVEIRA SANTOS 
Professor: JANE TAVARES ALVAREZ DA SILVA Turma: 9004/AC 
Nota da Prova: 2,5 Nota de Partic.: 1 Data: 11/06/2014 16:21:41 
 
 
 1a Questão (Ref.: 201307239218) Pontos: Sem Correç. / 1,5 
No dia 20 de fevereiro de 2002(20022002), vivenciou-se um momento que só 
acontecerá novamente em 21 de dezembro de 2112(21122112). 
 
Acredito que muitas pessoas não tinham familiaridade com o termo capicua que, 
segundo o dicionário do Aurélio, se aplica a um grupo de algarismos que lidos da 
esquerda para direita, ou da direita para esquerda, representam o mesmo número. 
 
Construa uma função que receba um número inteiro longo e retorne o número escrito 
de trás para frente. Exemplo: recebe 123 e retorna 321. 
 
 
 
 
Resposta: 
 
 
Gabarito: 
long long int espelha(long long int num ) //pode ser long long 
{ 
 long long int espelhado=0; //pode ser long long 
 while (num > 0) 
 { 
 espelhado = 10 * espelhado + num % 10; 
 num = num / 10; 
 } 
 return espelhado; 
} 
 
 
 
 2a Questão (Ref.: 201307059175) Pontos: Sem Correç. / 1,5 
Considere uma lista simplesmente encadeada não circular de inteiros e o tipo 
 struct no { 
 int dado; 
 struct no *link; 
 }; 
Faça uma função para inverter a lista e retornar o ponteiro para o início da lista resultante. 
Protótipo : no *inverter(no *ini); //ini aponta para o início da lista 
 
 
 
Resposta: 
 
 
Gabarito: no *inverter ( no *ini) // ini é um ponteiro para o início da lista { no *a, *b, *c; a = ini; b = NULL; 
while (a != NULL) { c = b; b = a; a = a->link; b->link = c; } ini = b; return(ini); } /* fim da função */ 
 
 
 
 3a Questão (Ref.: 201307031033) Pontos: 0,0 / 0,5 
Os métodos de ordenação são muito utilizados em estruturas de dados para facilitar a busca e a recuperação 
posterior de itens de conjuntos ordenados. Existem vários métodos de ordenação, por este motivo, marque 
corretamente a alternativa que apresenta o código do método de seleção. 
 
 
 
int ordena(float v[], float valor, int n) { 
 int ini = 0, fim = n-1, meio; 
 while (ini >= fim){ 
 meio = ini/2; 
 if (v[meio] == valor) 
 return meio; 
 if (valor < v[meio]) 
 fim = meio -1; 
 else 
 ini = meio+1; 
} 
 void ordena(int v[], int n){ 
int i, j, menor, aux; 
for (j = 0; j < n-1; j++) { 
 for (i = j+1; i < n; i++) { 
 if (v[i] < v[j]) { 
 aux = v[j]; 
 v[j] = v[i]; 
 v[i] = aux; 
 } 
 } 
} 
} 
 void ordena (int v[], int n){ 
 int i, j, aux; 
 for (j = 1; j < n; j++) 
 for (i=j; i > 0 && v[i-1]> v[i]; i--){ 
 aux = v[i-1]; 
 v[i-1] = v[i]; 
 v[i] = aux; 
 } 
} 
 
int ordena(float v[], float valor, int n){ 
 for (int i = 0; i < n; i++) 
 if (v[i] == valor) 
 return i; 
 return -1; 
} 
 
int ordena(float v[], float valor, int n) { 
 int ini = 0, fim = n -1, meio; 
 while (ini <= fim){ 
 meio = (ini + fim)/2; 
 if (v[meio] == valor) 
 return meio; 
 if (valor < v[meio]) 
 fim = meio -1; 
 else 
 ini = meio+1; 
 } 
 return -1; 
} 
 
 
 
 4a Questão (Ref.: 201307030876) Pontos: 0,5 / 0,5 
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 a afirmação I está correta. 
 
Apenas as afirmações II está corretas. 
 Apenas as afirmações I e II estão corretas. 
 
Apenas as afirmações I e III estão corretas. 
 
Apenas as afirmações II e III estão corretas. 
 
 
 
 5a Questão (Ref.: 201307031028) Pontos: 0,0 / 0,5 
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: 
 
 
 
Inserção 
 
Hash 
 
Bolha 
 Binária 
 Seleção 
 
 
 
 6a Questão (Ref.: 201307030678) Pontos: 0,5 / 0,5 
 
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 - c - a - b - c - a 
 
b - b - a - c - c - c 
 
a - a - a - b - c - b 
 
c - a - a - b - c - b 
 a - b - a - c - c - b 
 
 
 
 7a Questão (Ref.: 201307030994) Pontos: 1,0 / 1,0 
Qual das alternativas a seguir pode definir uma estrutura de fila? 
 
 
 
Entrada de dados pelo início e saída pelo final. 
 Entrada de dados pelo final e saída pelo início. 
 
Entrada e saída de dados pelo final. 
 
Entrada e saída de dados em qualquer local. 
 
Entrada e saída de dados pelo início. 
 
 
 
 8a Questão (Ref.: 201307022573) Pontos: 0,5 / 0,5 
Em relação a estruturas de dados, avalie a correspondência existente entre as estruturas 
de dados Lineares e Não Lineares com suas respectivas coleções de dados. 
 
 
A correta associação entre os elementos das duas tabelas é: 
 
 
 
 
 
 
 
 
 
 
 
 
 a1, b1, c2, d1 
 
a2, b1, c2, d1. 
 
a2, b2, c1, d2. 
 
a1, b1, c2, d2. 
 
a1, b2, c1, d1. 
 
 
 
 9a Questão (Ref.: 201307239240) Pontos: 0,0 / 0,5 
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 nota2peso2 peso1 peso2 * * + + / 
 nota1 peso1 * nota2 peso2 * + peso1 peso2 + / 
 
 
 
 10a Questão (Ref.: 201307235992) Pontos: 0,0 / 1,0 
Com relação à lista duplamente encadeada, é correto afirmar que : 
 
 
 Não pode haver remoções no meio da lista. 
 Consome menos memória do que uma lista simplesmente encadeada, se 
tivermos uma mesma aplicação. 
 A lista precisa ter sempre um ponteiro apontando para o 1º. nó 
 A lista pode ser percorrida com igual facilidade para a direita ou para a esquerda, 
pois existem dois ponteiros. 
 Não pode ser vazia. 
 
 
 
Avaliação: CCT0260_AV_201307135145 (AG) » ESTRUTURA DE DADOS 
Tipo de Avaliação: AV 
Aluno: 201307135145 - JOÃO CARLOS ALVES DE OLIVEIRA 
Professor: JANE TAVARES ALVAREZ DA SILVA Turma: 9005/AD 
Nota da Prova: 3,5 Nota de Partic.: 0 Data: 10/06/2014 18:53:49 
 
 1a Questão (Ref.: 201307379070) Pontos: 0,0 / 1,5 
Listas encadeadas são estruturas cujos nodos são alocados dinamicamente, isto é em tempo de 
execução, na medida em que se necessite de mais espaço. Sendo um nodo representado por: 
struct elemento{ 
 string nome; 
 int idade; 
 elemento *prox; 
}; 
 
Escreva em linguagem C++ uma função de nome criaNodo( ), que crie um novo nodo para ser inserido 
no final da lista, e forneça um ponteiro com o endereço do nodo criado. 
 
 
Resposta: void criaNodo(int &lista, *nodo, valor) { nodo->&lista; nodo=valor; lista->*nodo; } 
 
 
Gabarito: 
elemento * criaNodo ( ) 
{ 
 elemento *p=new elemento; 
 p->prox=null; 
 return p; 
} 
 
 2a Questão (Ref.: 201307381504) Pontos: 0,5 / 0,5 
 
 
 
 bubblesort. 
 por seleção. 
 uma mistura dos métodos de ordenação por inserção e bubblesort. 
 
 
 uma mistura dos métodos de ordenação por seleção e por inserção. 
 por inserção. 
 
 
 3a Questão (Ref.: 201307197853) Pontos: 0,0 / 1,5 
const int TAMMAX = 100; 
struct TipoLista{ 
int qtde; // descritor que representa a quantidade de elementos na lista 
int elemt[TAMMAX]; 
}; 
Fundamento no tipo de dado(registro) acima que representa uma implementação de uma lista linear sequencial. 
Construa um procedimento para adicionar um dado no final da lista. 
A lista e o dado serão passados por parâmetro. Usar o mecanismo de passagem por referência se for 
necessário. 
 
 
 
Resposta: TipoLista dado(int valor, lista); int i, j, *p { for (j=1; i>*p;j++) } 
 
 
Gabarito: 
void addFinalLista ( TipoLista &lista, int dado ){ 
if(lista.qtde == TAMMAX){cout << "Lista Cheia."; } 
else{ lista.elemt[lista.qtde] = dado; 
 lista.qtde++; 
 cout << "Dado adicionado com sucesso."; 
} } 
 
 
 
 
 4a Questão (Ref.: 201307398370) Pontos: 0,5 / 0,5 
Um programador recebeu a tarefa de construir um programa que receba uma cadeia de caracteres e verifique 
se esta cadeia de caracteres é um PALÍNDROME, sabendo-se que um PALÍNDROME apresenta a mesma 
sequência de caracteres da esquerda pra direita, quanto da direita para esquerda, marque a opção que possui a 
estrutura de dados mais adequada a este programa. 
 
 
 
Lista Sequencial 
 
Grafos 
 
Árvores 
 
Fila Sequencial 
 
Pilha Sequencial 
 
 
 
 
 
 5a Questão (Ref.: 201307176452) Pontos: 1,0 / 1,0 
Em uma lista linear simplesmente encadeada. 
 
 
 
O ponteiro do "primeiro" nó não é NULL, mas sim aponta de volta para o "primeiro" nó da lista, formando 
um ciclo. 
 
Cada ponteiro possui um só endereço que referencia o primeiro nó da lista. 
 
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, 
 
Cada nó possui um só ponteiro que referencia o próximo nó da lista. 
 
 
 6a Questão (Ref.: 201307176593) Pontos: 0,5 / 0,5 
Sobre o funcionamento da busca binária, é correto afirmar que dividindo seu vetor em duas metades. 
 
 
 
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 menor que o item que está na metade do vetor, procure na segunda metade, ou seja, a da 
direita. 
 
Se o item for igual ao item que está na metade do vetor, o item foi encontrado. 
 
Se o item for maior que o item que está na metade do vetor procure na primeira metade, ou seja, a da 
direita. 
 
 
 7a Questão (Ref.: 201307176775) Pontos: 0,0 / 1,0 
As estruturas de dados podem ser do tipo estática e dinâmica. As listas são estruturas parecidas com vetores 
podendo ser do tipo dinâmica. Entretanto, existem várias implementações de estruturas do tipo listas. Dessa 
forma, a estrutura que para o acesso de um dado, este precisa estar na saída, caso contrário, precisa remover 
os elementos a sua frente, é chamada de: 
 
 
 
Struct 
 
Fila 
 
Matriz 
 
Bolha 
 
Pilha 
 
 
 8a Questão (Ref.: 201307176418) Pontos: 0,5 / 0,5 
Podemos dizer que um container é: 
 
 
 
A entrada, que satisfaz a quaisquer restrições impostas pelo problema, necessária para se calcular uma 
solução do problema. 
 
A saída, que satisfaz a quaisquer restrições impostas pelo problema, necessária para se calcular uma 
solução do problema. 
 
Uma sequência de passos computacionais que transforma uma entrada em uma saída previamente 
determinada. 
 
O meio para armazenar e organizar dados com o objetivo de facilitar o acesso e as modificações. 
 
O que permite o armazenamento e a recuperação de dados independentemente de seu conteúdo. 
 
 9a Questão (Ref.: 201307243939) Pontos: 0,5 / 0,5 
Assinale a opção certa. 
 Quando não se escreve o protótipo de uma função ... 
 
 
 
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. 
 
É preciso definir a função antes do programa principal. 
 
A chamada da função não poderá ser feita em qualquer hipótese. 
 
 
 10a Questão (Ref.: 201307243895) Pontos: 0,0 / 0,5 
A estrutura de dados do tipo pilha (stack) é um tipo abstrato de dado baseada no princípio: 
 
 
 
First In First Out (FIFO). 
 
De dividir para conquistar. 
 
Da localidade de referência. 
 
Last In First Out (LIFO). 
 
Da indiferença. 
 
Avaliação: CCT0260_AV_201402455135 (AG) » ESTRUTURA DE DADOS 
Tipo de Avaliação: AV 
Aluno: 201402455135 - LETÍCCIA GIL DE ALCANTARA NOGUEIRA 
Professor: JANE TAVARES ALVAREZ DA SILVA Turma: 9003/AB 
Nota da Prova: 5,0 Nota de Partic.: 0,8 Data: 22/11/2014 09:58:54 
 
 
 1a Questão (Ref.: 201402768632) Pontos: 0,0 / 1,0 
Vetores são elementos considerados longos quando usados como 
parâmetros de funções, mesmo assim pode-se passar um vetor como um 
argumento de uma função. Seja o exemplo a seguir codificado em C++: 
 
int main() 
{ 
 int vetor[]={1,2,3,4,5}; 
 saída(vetor,5); 
 return 0; 
} 
 
Neste exemplo a função saída( ) está sendo chamada e recebe como 
parâmetros o vetor e o inteiro 5. Marque a alternativa que ilustra uma 
possibilidade correta de protótipo para esta função. 
 
 void saída(int vetor, int dim); 
 void saída(int *vetor, int dim); 
 void saída(int **vetor, int dim); 
 void saída(vetor [ ], int dim); 
 void saída(int [ ] vetor, int dim); 
 
 
 
 2a Questão (Ref.: 201402528655) Pontos: 1,0 / 1,0 
Uma estrutura de dados em lista duplamente encadeada permite na cadeia movimentos para 
 
 
frente, apenas. 
 frente e para trás, apenas. 
 
trás, apenas. 
 
cima e para baixo ou para frentee para trás. 
 
cima e para baixo, apenas. 
 
 
 
 3a Questão (Ref.: 201402520316) Pontos: 0,5 / 0,5 
Em relação a estruturas de dados, avalie a correspondência existente entre as estruturas 
de dados Lineares e Não Lineares com suas respectivas coleções de dados. 
 
 
A correta associação entre os elementos das duas tabelas é: 
 
 
 
 
 
 
 
 
 
 
 
 
a2, b2, c1, d2. 
 a1, b1, c2, d1 
 
a2, b1, c2, d1. 
 
a1, b2, c1, d1. 
 
a1, b1, c2, d2. 
 
 
 
 4a Questão (Ref.: 201402528619) Pontos: 0,5 / 0,5 
Com relação as listas lineares sequenciais: 
I - Uma lista linear sequencial é um vetor em linguagens estruturadas, também chamado de array. 
II - Um elemento de uma lista linear sequencial pode ser acessado diretamente através de um índice. 
III - Uma lista linear sequencial pode ter elementos de um mesmo tipo, ou de tipos diferentes. 
 
 Apenas as afirmações I e II estão corretas. 
 
Apenas as afirmações I e III estão corretas. 
 
Apenas a afirmação I está correta. 
 
Apenas as afirmações II e III estão corretas. 
 
Apenas as afirmações II está corretas. 
 
 
 
 5a Questão (Ref.: 201402738271) Pontos: 0,5 / 0,5 
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. 
 
 18, 2 e 67 
 6 , 4 e 6 
 67, 4 e 23 
 67, 3 e 15 
 23 , 4, e 6 
 
 
 
 6a Questão (Ref.: 201403067886) Pontos: 0,5 / 0,5 
Analise as afirmativas sobre uma pilha estática e assinale a opção correta. 
 
I Ordenar é uma operação que não se faz com pilha. 
II Inserir dados é uma operação que se faz com a pilha. 
III Remover dados em qualquer posição é uma operação que se faz com a pilha. 
IV Verificar se a Pilha está cheia é necessário quando se deseja inserir nela. 
V Inicializar uma pilha significa zerar todas as variáveis do vetor. 
 
 I, II e V estão corretas. 
 I, II e IV estão corretas. 
 II e III estão corretas. 
 I e II estão corretas. 
 I e IV estão corretas. 
 
 
 
 7a Questão (Ref.: 201402528628) Pontos: 0,0 / 0,5 
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: 
 
 512 e 1024 
 
1024 e 512 
 
9 e 9 
 10 e 10 
 
9 e 10 
 
 
 
 8a Questão (Ref.: 201402528260) Pontos: 0,5 / 0,5 
A estrutura de dados Pilha funciona de acordo com o seguinte fundamento básico: 
 
 
Tanto o primeiro como o último podem sair primeiro. 
 
O primeiro a entrar é o primeiro a sair. 
 
Quem estra no topo da pilha não sai mais. 
 O primeiro a entrar é o último a sair. 
 
O último a entrar é o último a sair. 
 
 
 
 9a Questão (Ref.: 201402559211) Pontos: 1,5 / 1,5 
Como é a lógica do LIFO? 
 
 
Resposta: Segue o conceito "Last in First Out", em que o último que entra é o primeiro que sai, e é utilizado em 
estrutura de dados na pilha. 
 
 
Gabarito: O primeiro que entra na pilha é o último que sai. 
 
 
 
 10a Questão (Ref.: 201402731060) Pontos: 0,0 / 1,5 
Escreva em linguagem C++ uma função de nome achaMaior( ), que receba como parâmetros um vetor 
de inteiros e um outro parâmetro do tipo inteiro que represente o tamanho deste vetor. A função deve 
também, buscar e retornar o maior elemento do vetor. 
 
 
Resposta: achaMaior(int vetor[], int TAM); if(vetor[]=0, vetor[]>TAM, vetor[]++); cout<<"\nMaior elemento do 
vetor\n"; return=0 
 
 
Gabarito: 
int achaMaior(int v[ ], int t) 
{ 
 int maior=v[0]; 
 for( int i=1; i < t; i++) 
 { 
 if( maior < v[i] ) maior=v[i]; 
 } 
 return maior; 
} 
 
Avaliação: CCT0260_AV_201403150494 » ESTRUTURA DE DADOS
Tipo de Avaliação: AV
Aluno: 201403150494 - CARLOS EDUARDO FERREIRA DA SILVA 
Professor: ALEXANDRE SOARES ALVES Turma: 9002/AA
Nota da Prova: 4,0 Nota de Partic.: 2 Data: 22/11/2014 16:09:05
1
a
 Questão (Ref.: 201403193550) Pontos: 1,0 / 1,0
Uma estrutura de dados em lista duplamente encadeada permite na cadeia movimentos para 
cima e para baixo, apenas.
frente e para trás, apenas.
cima e para baixo ou para frente e para trás.
trás, apenas.
frente, apenas.
2
a
 Questão (Ref.: 201403193687) Pontos: 0,0 / 0,5
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 o valor de vl se o valor 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 -1 se o valor de n foi encontrado.
Retorna a posição de v se o valor vl foi encontrado.
3
a
 Questão (Ref.: 201403735062) Pontos: 0,0 / 1,0
Observe as afirmações a seguir:
A) Antes de iniciar a construção de uma lista encadeada, o ponteiro que indica seu primeiro elemento deve ser 
inicializado com um endereço válido.
B) Antes de iniciar a construção de uma lista encadeada, o ponteiro que indica seu primeiro elemento deve ser 
inicializado com um endereço nulo.
C) Para inserir um nó em uma lista encadeada deve-se, inicialmente, alocar o novo nó e preenchê-lo com o valor 
correspondente.
Página 1 de 4BDQ Prova
26/11/2014http://bquestoes.estacio.br/bdq_prova_resultado_preview_aluno.asp
D) Para inserir um nó em uma lista encadeada deve-se, inicialmente, preenchê-lo com o valor correspondente e, 
posteriormente alocar o novo nó.
As afirmativas B e D estão corretas. 
As afirmativas A e D estão corretas. 
As afirmativas A e C estão corretas. 
As afirmativas B e C estão corretas.
As afirmativas C e D estão corretas. 
4
a
 Questão (Ref.: 201403731739) Pontos: 0,5 / 0,5
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, III e VI são afirmativas verdadeiras
II, IV e V são afirmativas verdadeiras
II, IV, V e VI são afirmativas verdadeiras
I, II e V são afirmativas verdadeiras
I, III, IV e VI são afirmativas verdadeiras 
5
a
 Questão (Ref.: 201403193650) Pontos: 0,5 / 0,5
Tanto a operação TOP (acessa topo), quanto à operação POP (remover), permite acessar o último elemento 
armazenado em uma Pilha. Quanto à diferença entre ambas as operações em relação ao estado da Pilha é correto 
afirmar:
Somente a operação POP altera o estado da Pilha 
Somente a operação TOP altera o estado da Pilha 
Ambas alteram o estado da Pilha
A operação TOP remove um elemento e altera o estado da Pilha
Nenhuma das operações altera o estado da Pilha 
6

Continue navegando

Outros materiais