Buscar

Avaliando o Aprendizado 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

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

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

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

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

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

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

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

ESTRUTURA DE DADOS 
 
Exercício: CCT0260_EX_A1_201401272398 Voltar 
Aluno(a): VALERIOS RICARD SOUZA LIMA Matrícula: 201401272398 
 Data: 02/09/2014 14:28:58 (Finalizada) 
 
 
 1a Questão (Ref.: 201401536897) 
Analise as afirmativas abaixo e selecione a alternativa correta. 
 
I Algumas aplicações da estrutura de dados grafo são: Diagrama de Entidade 
Relacionamento e Redes de computadores. 
 
II Árvore e lista duplamente encadeada são estruturas não lineares. 
III A Fila é uma estrutura não linear e a inserção de um elemento acontece ao final. 
IV A Lista é uma das estruturas de dados mais simples, mas não se pode ordená-la. 
 
V O uso de ponteiros é fundamental para construção de listas encadeadas. 
 
 
 I e V são verdadeiras 
 II E IV são verdadeiras 
 III e V são verdadeiras 
 II e V são verdadeiras 
 I , II e IV são verdadeiras 
 Gabarito Comentado. 
 
 
 
 
 2a Questão (Ref.: 201401865833) 
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. 
 
 
 II, IV, V e VI são afirmativas verdadeiras 
 I, III, IV e VI são afirmativas verdadeiras 
 II, IV e V são afirmativas verdadeiras 
 I, II, III e VI são afirmativas verdadeiras 
 I, II e V são afirmativas verdadeiras 
 
 
 
 
 
 3a Questão (Ref.: 201401566777) 
Na maioria dos sistemas operacionais, os arquivos são organizados hierarquicamente em um esquema de 
diretórios (pastas) e sub-diretórios. Qual a estrutura mais adequada para representar este problema ? 
 
 
 
pilha 
 
fila 
 
lista 
 árvore 
 
grafo 
 
 
 
 
 
 4a Questão (Ref.: 201401566513) 
O processo de modularização de programa, utiliza funções a fim de 
tornar os códigos mais inteligíveis e também possibilitar uma 
manutenção mais fácil. Analise o código a seguir e marque a opção 
correta: 
 
 
 
 
O programa executa perfeitamente, mas não mostra o valor da media já que esta função não foi 
chamada na função main(). 
 
O programa não executa corretamente, pois 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 recohecê-las. 
 O programa executa perfeitamente independente da ordem das funções já que existem os seus 
protótipos. 
 O programa não executa corretamente, pois o protótipo da função media não apresenta a identificação 
dos parâmetros, mas apenas os tipos dos mesmos. 
 Gabarito Comentado. 
 
 
 
 
 5a Questão (Ref.: 201401532449) 
 
 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. 
 
 
 
lista 
 
fila 
 pilha 
 
grafo 
 
árvore 
 Gabarito Comentado. 
 
 
 
 
 6a Questão (Ref.: 201401327397) 
Estão entre algumas das possíveis formas de se estruturar dados: 
 
 
 Grafos, lista ordenada, vetores. 
 
Algoritmos, lista ordenada, vetores. 
 
Grafos, lista ordenada, algoritmos. 
 
Grafos, algoritmos, fila. 
 
Lista encadeada, vetores, algoritmos. 
 Gabarito Comentado. 
 
 
 
Exercício: CCT0260_EX_A2_201401272398 Voltar 
Aluno(a): VALERIOS RICARD SOUZA LIMA Matrícula: 201401272398 
 Data: 09/09/2014 09:17:24 (Finalizada) 
 
 
 1a Questão (Ref.: 201401530015) 
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 e apresenta como resultado o valor 7.0 
 
O código compila normalmente, pois como a descrição da função float media(float x, float y)está 
posicionada após a função int main ( ), não há necessidade do uso de protótipos. 
 
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 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. 
 Gabarito Comentado. 
 
 
 
 
 2a Questão (Ref.: 201401327781) 
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. 
 
Retorna -1 se o valor de vl estiver dentro de v. 
 
Resulta em erro, se o valor de vl não estiver dentro de v. 
 Retorna a posição de v se o valor vl foi encontrado. 
 Retorna -1 se o valor de n foi encontrado. 
 Gabarito Comentado. 
 
 
 
 
 3a Questão (Ref.: 201401327750) 
As variáveis em programação são utilizadas para armazenar um valor de determinado tipo em um espaço 
reservado na memória. Em algumas linguagens de programação podemos declarar, ou seja, reservar um espaço 
na memória, fora do escopo da função principal, e fora do escopo de qualquer outra função. Ao fazer a 
declaração desta forma estamos declarando uma variável do tipo: 
 
 
 
Constante 
 Global 
 
Local 
 
Real 
 
Inteiro 
 
 
 
 
 
 4a Questão (Ref.: 201401327785) 
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. 
 
 
 
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. 
 Em duas funções diferentes temos duas variáveis também diferentes com o mesmo nome apresentando 
o mesmo valor. 
 
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. 
 
Se dentro de uma função "mostra" declararmos uma variável 'R' com um determinado valor poderemos 
imprimir esta variável em qualqueroutra 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. 
 Gabarito Comentado. 
 
 
 
 
 5a Questão (Ref.: 201401330585) 
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 pilha / área de registro 
 
( ) área de registro / área de dados globais 
 
( ) área de dados globais / área de registro 
 
( ) área de registro / área de pilha 
 
 
 
 
 
 6a Questão (Ref.: 201401533415) 
Observe o programa abaixo e escolha a alternativa que apresenta o retorno da 
função chamada pela função main(). 
 
 
 
 O valor retornado corresponde ao índice da variável que 
contem o maior número 
 Retorna 0 porque o nome do vetor da função main(...) é 
diferente do nome do vetor da função descobre(...) 
 O menor número é retornado 
 O maior número é retornado 
 O valor retornado corresponde ao índice mais um da variável 
que contem o menor número 
 Gabarito Comentado. 
 
 
Exercício: CCT0260_EX_A3_201401272398 Voltar 
Aluno(a): VALERIOS RICARD SOUZA LIMA Matrícula: 201401272398 
 Data: 15/09/2014 21:31:12 (Finalizada) 
 
 
 1a Questão (Ref.: 201401327617) 
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 
 
10 e 10 
 
9 e 10 
 
1024 e 512 
 
9 e 9 
 Gabarito Comentado. 
 
 
 
 
 2a Questão (Ref.: 201401327571) 
Sobre o funcionamento da busca binária, é correto afirmar que dividindo seu vetor em duas metades. 
 
 
 
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 não foi encontrado. 
 
Se o item for menor que o item que está na metade do vetor, o item foi encontrado. 
 Se o item for igual ao item que está na metade do vetor, o item foi encontrado. 
 
Se o item for maior que o item que está na metade do vetor procure na primeira metade, ou seja, a da 
direita. 
 Gabarito Comentado. 
 
 
 
 
 3a Questão (Ref.: 201401330582) 
Para consultarmos uma estrutura de dados, normalmente, empregamos um tipo de pesquisa de dados. O trecho 
de programa a seguir refere-se a uma pesquisa por um elemento único (sua primeira ocorrência), em um 
conjunto de elementos de dados armazenado em uma estrutura de acesso indexado e aleatório. Selecione a 
opção correspondente ao algoritmo utilizado, no programa, para a referida pesquisa: 
int busca(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; 
} 
 
 
 
pesquisa cadeias indexada 
 pesquisa binária 
 
pesquisa sequencial 
 
pesquisa indexada 
 
pesquisa de cadeias 
 Gabarito Comentado. 
 
 
 
 
 4a Questão (Ref.: 201401327424) 
Marque a afirmativa correta para a "Busca ou pesquisa binária". 
 
 
 
Consiste em adicionar um valor no vetor, alterando a ordem existente e ajustando o total de elementos. 
 
É o processo pelo qual um conjunto de dados é colocado em uma ordem crescente ou decrescente. 
 Consiste em 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. 
 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. 
 Gabarito Comentado. 
 
 
 
 
 5a Questão (Ref.: 201401327780) 
Os algoritmos de busca são muito utilizados em estrutura de dados. Sendo assim, o algoritmo que realiza a 
busca em vetores e que exige acesso aleatório aos elementos do mesmo e que parte do pressuposto de que o 
vetor está ordenado e realiza sucessivas divisões do espaço de busca comparando o elemento que se deseja 
com o elemento do meio do vetor, é chamado de: 
 
 
 
Pesquisa de seleção 
 
Pesquisa sequêncial 
 Pesquisa binária 
 
Tabela Hash 
 
Pesquisa ordenada 
 Gabarito Comentado. 
 
 
 
 
 6a Questão (Ref.: 201401530018) 
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]=aluno.5.7; 
 
aluno.vet[10].nota=5.7; 
 vet[10].aluno.nota=5.7 ; 
 vet[10].nota=5.7; 
 
aluno.vet[10]=5.7; 
 Gabarito Comentado. 
 
 
 
Exercício: CCT0260_EX_A4_201401272398 Voltar 
Aluno(a): VALERIOS RICARD SOUZA LIMA Matrícula: 201401272398 
 Data: 22/09/2014 19:52:36 (Finalizada) 
 
 
 1a Questão (Ref.: 201401327760) 
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: 
 
 
 
Binária 
 Seleção 
 
Bolha 
 
Hash 
 
Inserção 
 Gabarito Comentado. 
 
 
 
 
 2a Questão (Ref.: 201401537260) 
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. 
 
 
 6 , 4 e 6 
 67, 3 e 15 
 18, 2 e 67 
 67, 4 e 23 
 23 , 4, e 6 
 Gabarito Comentado. 
 
 
 
 
 3a Questão (Ref.: 201401327672) 
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 nome e a nota obtida pelo candidato. Deseja-se que este vetor seja ordenado pela nota, em ordem 
decrescente. Sendo o vetor pequeno (poucos elementos), o programador responsável por desenvolver este algoritmo, 
escolheu um método de ordenação que executa os seguintes passos: 
 Selecione candidato com maior nota entre todos e troque-o com o candidato que está na primeira posição do 
vetor; 
 Selecioneo segundo maior e troque-o com o candidato que está na segunda posição; 
 Os passos descritos anteriormente são seguidos para a terceira nota, quarta nota e assim por diante até que reste 
apenas um candidato. 
O algoritmo utilizado pelo programador trata-se do método de ordenação denominado: 
 
 
 
Inserção 
 
Bolha 
 
Quicksort 
 
Heapsort 
 Seleção 
 Gabarito Comentado. 
 
 
 
 
 4a Questão (Ref.: 201401530022) 
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 
 
6 e 4 
 
7 e 1 
 
6 e 1 
 
5 e 5 
 Gabarito Comentado. 
 
 
 
 
 5a Questão (Ref.: 201401327417) 
Marque a afirmativa correta para a "inserção incremental". 
 
 
 
A técnica é boa quando os dados ficam uniformemente distribuídos entre os seus compartimentos. 
 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. 
 
Os pivôs são escolhidos aleatoriamente. 
 
É um tipo de ordenação por intercalação 
 
 
 
 
 
 6a Questão (Ref.: 201401330821) 
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". 
 
 
 
QuickSort 
 
Seleção 
 
MergeSort 
 
Bolha 
 Inserção 
 Gabarito Comentado. 
 
 
Exercício: CCT0260_EX_A5_201401272398 Voltar 
Aluno(a): VALERIOS RICARD SOUZA LIMA Matrícula: 201401272398 
 Data: 30/09/2014 20:43:02 (Finalizada) 
 
 
 1a Questão (Ref.: 201401327755) 
Existem vários tipos de estruturas de dados do tipo dinâmicas, entretanto, uma estrutura considerada simples 
são as listas. Pode-se implementar vários tipos de listas, entretanto, a estrutura que apresenta o conceito de 
LIFO é: 
 
 
 Pilha 
 
Ponteiro 
 
Struct 
 
Matriz 
 
Fila 
 
 
 
 
 
 2a Questão (Ref.: 201401327744) 
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: 
 
 
 
Ambas alteram o estado da Pilha 
 Somente a operação POP altera o estado da Pilha 
 
Nenhuma das operações altera o estado da Pilha 
 
Somente a operação TOP altera o estado da Pilha 
 
A operação TOP remove um elemento e altera o estado da Pilha 
 Gabarito Comentado. 
 
 
 
 
 3a Questão (Ref.: 201401327249) 
A estrutura de dados Pilha funciona de acordo com o seguinte fundamento básico: 
 
 
 
O primeiro a entrar é o primeiro a sair. 
 
Tanto o primeiro como o último podem sair primeiro. 
 
O último a entrar é o último a sair. 
 O primeiro a entrar é o último a sair. 
 
Quem estra no topo da pilha não sai mais. 
 Gabarito Comentado. 
 
 
 
 
 4a Questão (Ref.: 201401327732) 
Ao remover um elemento armazenado em uma pilha é necessário a atualização da variável (Topo) indicadora de 
posição. Qual das alternativas abaixo está correta? 
 
 
 
Antes da operação de remoção incrementa a variável indicadora de posição. 
 
Após a operação de remoção incrementa a variável indicadora de inicio. 
 Após a operação de remoção decrementa a variável indicadora de posição. 
 
Após a operação de remoção incrementa a variável indicadora de posição. 
 
Antes a operação de remoção decrementa a variável indicadora de posição. 
 Gabarito Comentado. 
 
 
 
 
 5a Questão (Ref.: 201401537385) 
No ENEM 2012, 5790989 estudantes confirmaram inscrição. 
 
Evidentemente, muitos faltaram às provas e o número exato não era sabido quando foi pedido ao 
desenvolvedor que definisse uma função para que pudesse listar toda inscrição, e respectiva nota de 
redação tabulada, que tivesse alcançado uma pontuação maior ou igual à nota procurada e, ao final, o 
total de estudantes que atingiram essa meta. 
 
Como só interessava a nota de redação, o desenvolvedor definiu a struct abaixo e começou a definir 
a função queFaz(...) para que pudesse atender ao que foi pedido, usando a estrutura de dados Lista 
Sequencial. 
Entretanto, ele não conseguiu finalizar. Poderia você ajudá-lo? 
 
Assinale a alternativa correta onde está presente o trecho que completa a função. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 Gabarito Comentado. 
 
 
 
 
 6a Questão (Ref.: 201401327261) 
O almoxarifado de um órgão pediu ao técnico de informática que elaborasse um sistema de custeio que, para 
cada saída de material, considerasse o custo do mais recente que houvera dado entrada no almoxarifado. O 
técnico deve desenvolver um programa para tratar com uma estrutura de dados do tipo? 
 
 
 LIFO 
 
ARRAY 
 
FIFO 
 
TABLE 
 
RECORD 
 Gabarito Comentado. 
 
 
Exercício: CCT0260_EX_A6_201401272398 Voltar 
Aluno(a): VALERIOS RICARD SOUZA LIMA Matrícula: 201401272398 
 Data: 07/10/2014 20:43:06 (Finalizada) 
 
 
 1a Questão (Ref.: 201401866966) 
Observe a função que manipula uma pilha e assuma que TAM é uma constante definida com valor 5. Saiba 
que o nome da função já explícita a finalidade dela. 
 
Considere a chamada da função conforme linha abaixo, sabendo-se que vet é um vetor de tamanho 5 e que 
não tem nenhum valor ainda: 
 
 
Analise as afirmativas abaixo que sugerem correções, ou não, na definição na função e assinale a opção 
que contem as afirmativas corretas. 
 
I Faltou & antes da variável vetor e irá acusar erro. 
II A variável topo está sem tipo. 
III O teste está correto porque o índice do primeiro elemento do vetor em C++ é 1, obrigatoriamente. 
IV Na linha comentada deveria estar presente um comando de atribuição que decrementaria a variável topo. 
V A linha vetor[topo]=valor; está correta. 
 
 II e V estão corretas 
 I, II e IV estão corretas 
 I e III estão corretas 
 I , III e V estão corretas 
 I e II estão corretas 
 Gabarito Comentado. 
 
 
 
 
 2a Questão (Ref.: 201401867032) 
Abaixo temos algumas afirmativas sobre o uso da estrutura pilha de forma estática e sequencial. Leia com 
muita atenção e assinale a opção correta. 
 
I Não existe movimentação na pilha quando inserimos ou removemos um elemento. Apenas o valor da 
variável que controla o topo é alterado. 
II Não podemos usar estruturas homogêneas, ou heterogêneas e uma variável para controlar o topo na 
alocação sequencial. 
III Um dos fatores que limita o crescimento da pilha é a quantidade de memória alocada quandousamos 
matrizes. 
IV Quando formos empilhar um elemento, é preciso verificar se a pilha não está cheia. Isso evita underflow. 
V Quando formos desempilhar um elemento, é preciso verificar se a pilha não está vazia. Isso evita overflow. 
 
 
 I e III estão corretas 
 I, IV e V estão corretas 
 II, IV e V estão corretas 
 I, IV e V estão corretas 
 Somente a I está correta 
 Gabarito Comentado. 
 
 
 
 
 3a Questão (Ref.: 201401530027) 
As pilhas sequenciais são estruturas que guardam a ordem reversa dos dados nelas armazenados, e isto em 
muitas ocasiões é muito vantajoso. A operação usada para inserir um elemento X numa pilha é conhecida 
na literatura como PUSH (X). Para remover um elemento de uma pilha a operação é o POP( ). Assim estas 
duas funções devem implentar o algoritmo LIFO (Last In - First Out ) ou o último a entrar é o primeiro a 
sair. Sendo assim se aplicarmos as seguintes operações em uma PILHA vazia: 
PUSH(10),PUSH(5),POP(),PUSH(7),POP(),PUSH(2),POP(),POP( ). 
Quais valores restarão na pilha? 
 
 
 
10 e 2 
 Nenhum, a pilha estará vazia. 
 
Apenas o 10 
 
7 e 2 
 
Apenas o 2 
 
 
 
 
 
 4a Questão (Ref.: 201401565624) 
Um jogo de memória fornece sequências de números e o jogador deve dizer qual a sequência inversa para cada 
nova sequência fornecida pelo jogo. Qual a estrutura de dados mais adequada para modelar esse jogo ? 
 
 
 
árvore 
 pilha 
 
fila 
 
lista 
 
grafo 
 
 
 
 
 
 5a Questão (Ref.: 201401535972) 
Sabemos que podemos representar uma expressão de três formas, sendo que uma 
delas é chamada de notação polonesa reversa ( pós-fixa). 
Suponha que um professor de Estrutura de Dados desejasse compor a nota do 
bimestre com uma prova e um trabalho oral, usando pesos diferenciados para as 
notas. Sendo assim, usaria a média ponderada como a expressão abaixo. 
 
A única calculadora que encontrou disponível foi uma com representação pós fixa. 
Assinale a alternativa que apresenta a sequência que deveria ser digitada pelo 
professor para conseguir calcular a média de um aluno. 
 
 
 
 / * nota1 peso1 + * nota2 peso2 + peso1 peso2 
 nota1 peso1 * nota2 peso2 * peso1 peso2 + + / 
 nota1 peso1 * nota2 peso2 * + peso1 peso2 + / 
 / + * nota1 peso1 * nota2 peso2 + peso1 peso2 
 nota1 peso1 nota2 peso2 peso1 peso2 * * + + / 
 Gabarito Comentado. 
 
 
 
 
 6a Questão (Ref.: 201401866875) 
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 e IV estão corretas. 
 I e II estão corretas. 
 I, II e V estão corretas. 
 I, II e IV estão corretas. 
 II e III estão corretas. 
 Gabarito Comentado. 
 
 
 
Exercício: CCT0260_EX_A7_201401272398 Voltar 
Aluno(a): VALERIOS RICARD SOUZA LIMA Matrícula: 201401272398 
 Data: 15/10/2014 09:31:29 (Finalizada) 
 
 
 1a Questão (Ref.: 201401530029) 
 As filas sequenciais são estruturas de dados utilizadas em diversas aplicações, tais como fila de 
processo, fila de impressão, sistemas de senha etc. Entretanto, nas aplicações onde há muita 
movimentação de dados, inserções e remoções de dados na fila, surgem espaços ociosos que podem 
levar ao fenômeno chamado de esgotamento de memória. Para sanar este problema pode-se substituir 
a fila sequencial por: 
 
 
 fila circular 
 
pilha sequencial 
 
lista circular 
 
pilha circular 
 
lista sequencial 
 Gabarito Comentado. 
 
 
 
 
 2a Questão (Ref.: 201401327753) 
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 
 
Pilha 
 
Matriz 
 
Bolha 
 
Struct 
 Gabarito Comentado. 
 
 
 
 
 3a Questão (Ref.: 201401327741) 
Para a criação de uma Fila seqüencial basta iniciar as variáveis de início e final, ou seja, apontá-las para as 
posições iniciais do vetor. O que alteraria na rotina de inserir se a variável final fosse inicializada com o valor -1 
(menos um): 
 
 
 
Após a inserção deve-se fazer o incremento da variável final 
 
Antes da inserção deve-se fazer o decremento da variável final 
 
Após a inserção deve-se fazer o decremento da variável final 
 Antes da inserção deve-se fazer o incremento da variável final 
 
Após a inserção deve-se fazer o incremento da variável inicio 
 Gabarito Comentado. 
 
 
 
 
 4a Questão (Ref.: 201401327242) 
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. 
 FIFO, não-preemptivo. 
 
LIFO, não-preemptivo. 
 
Circular, não-preemptivo. 
 
Por prioridades, preemptivo. 
 
 
 
 
 
 5a Questão (Ref.: 201401532673) 
 
 
 
 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; 
 } 
 Gabarito Comentado. 
 
 
 
 
 6a Questão (Ref.: 201401539872) 
Um aluno do EAD estava estudando para a prova de Estrutura quando viu o trecho do 
programa abaixo em uma apostila. 
 
Como não estava com seu micro, começou a analisar a função entra(...), ficando atento a 
alguns membros da struct. 
Quando finalizou, virou a página da apostila e viu a resposta. Então, ficou muito feliz por 
ter identificado a estrutura 
Assinale a alternativa onde está presente a resposta correta. 
 
 
 Fila 
 Lista simplesmente encadeada 
 Fila Circular 
 Lista Linear 
 Pilha 
 Gabarito Comentado. 
 
 
Exercício: CCT0260_EX_A8_201401272398 Voltar 
Aluno(a): VALERIOS RICARD SOUZA LIMA Matrícula: 201401272398 
 Data: 22/10/2014 11:55:12 (Finalizada) 
 
 
 1a Questão (Ref.: 201401539703) 
Observe o trecho de um código abaixo 
struct no 
{ 
 int dado; 
 struct no *proximo; 
}; 
 
int main() 
{ 
 no *lista=new no; 
 no *pt= new no; 
 lista->dado=1989; 
 lista->proximo=NULL; 
... 
 
 //Nesse ponto, assuma que cinco nós foram alocados em uma lista simplesmente encadeada e valores 
atribuídos aos membros dado na sequência:1989 2014 2011 1962 2002 e, que através do comando 
abaixo, o ponteiro pt passou a apontar para um nó da lista. 
 
 pt->proximo=lista->proximo->proximo; 
 
 Assinale a alternativa que apresenta o comando equivalente a: 
cout << " \nValor do ?o no: " << pt->proximo->proximo->dado; 
 
 
 cout << " \nValor do ?o no: " << lista->dado; 
 cout << " \nValor do ?o no: " << lista->proximo->dado; 
 cout << " \nValor do ?o no: " << lista->proximo->proximo->proximo->dado; 
 cout << " \nValor do ?o no: " << lista->proximo->proximo->dado; 
 cout << " \nValor do ?o no: " << lista->proximo->proximo->proximo-> proximo-
>dado; 
 Gabarito Comentado. 
 
 
 
 
 2a Questão (Ref.: 201401866322) 
Vários conceitos foram estudados quando se falou sobre ponteiros e alocação dinâmica. Entre eles, o de 
Fragmentação Externa. Assinale a opção que explica o que significa. 
 
 
 Espaço de Memória não utilizado dentro do segmento. 
 Espaço livre no HD. 
 Espaço de Memória perdido entre os segmentos. 
 Significa alocação não contígua. 
 Código do programa gravado em partes separadas na memória. 
 Gabarito Comentado. 
 
 
 
 
 3a Questão (Ref.: 201401566764) 
Dr. Pei Tam possui uma lista não ordenada de pacientes de seu consultório em que registra apenas 
o nome endereço e o telefone de cada paciente. Como não há limites para o crescimento de sua 
lista, como se pode implementar a inserção de um novo paciente na lista, sabendo que cada 
paciente é do tipo Paciente e a lista é do tipo List assim definidos : 
struct Paciente { 
 long int matricula; 
 string nome, endereco e tel; 
}; 
struct List { 
 Paciente p; 
 struct List *link; 
 }; 
 
 
 List * inserePac(List *i) { 
 List *novo = new List; 
 Paciente pat; 
 novo->p = pat; 
 novo->link = i; 
 return novo; 
} 
 List * inserePac(List *i, Paciente pt){ 
 List *novo ; 
 novo->p = pt; 
 novo->link = i; 
 return novo; 
} 
 List * inserePac(List *i, Paciente pac) 
{ 
 List *novo = new List; 
 novo.p = pac; 
 novo.link = i; 
 return novo; 
} 
 List * inserePac(List *i, Paciente pt) 
{ 
 List *novo = new List; 
 novo->p = pt; 
 novo->link =i; 
 return novo; 
} 
 List insereCliente(List *i, Paciente pac) 
{ 
 List novo[]; 
 novo[0].p = pac; 
 novo[0].link = i; 
 return novo; 
} 
 Gabarito Comentado. 
 
 
 
 
 4a Questão (Ref.: 201401565628) 
Sou uma empresária que quer crescer e por isso, tenho que aumentar progressivamente a minha lista de 
clientes, sem limitar este crescimento. Assim, à medida que novos clientes são cadastrados, posso, se 
necessário, contratar mais e mais empregados. Marque a opção que especifica o tipo de lista e o tipo de 
alocação de memória mais adequados para este problema. 
 
 
 lista encadeada e alocação dinâmica de memória 
 
fila encadeada e alocação dinâmica de memória 
 
pilha dinâmica e alocação dinâmica de memória 
 
lista sequencial e alocação dinâmica de memória 
 
fila dinâmica e alocação dinâmica de memória 
 Gabarito Comentado. 
 
 
 
 
 5a Questão (Ref.: 201401567621) 
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); 
 Gabarito Comentado. 
 
 
 
 
 6a Questão (Ref.: 201401532683) 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
xercício: CCT0260_EX_A9_2014012723
98 Voltar 
Aluno(a): VALERIOS RICARD SOUZA 
LIMA 
Matrícula: 201401272398 
 Data: 29/10/2014 21:35:03 (Finalizada) 
 
 
 1a Questão (Ref.: 201401327245) 
Qual das seguintes estruturas de dados é classificada como heterogênea? 
 
 
 Vetor 
 Registro 
 
Pilha 
 
Fila 
 
Loop 
 Gabarito Comentado. 
 
 
 
 
 2a Questão (Ref.: 201401327637) 
Qual o valor de a após a execução do trecho abaixo? 
int a = 10; 
int *x; 
x = &a; 
*x = 55; 
 
 
 10 
 
65 
 55 
 
0 
 
existe um erro no trecho de código 
 Gabarito Comentado. 
 
 
 
 
 3a Questão (Ref.: 201401327754) 
Para simular uma lista encadeada simplesmente pode se utilizar as estruturas de ponteiros. Como pode ser 
definida uma estrutura do tipo ponteiro? 
 
 
 
Uma estrutura que aponta para um objeto de arquivo. 
 
Um objeto que armazena dado diretamente na memória. 
 Um objeto que contém um endereço de memória. 
 
Um objeto que não contém endereço de memória. 
 
Uma estrutura utilizada apontar erros de operações. 
 Gabarito Comentado. 
 
 
 
 
 4a Questão (Ref.: 201401532702) 
Assinale a opção correta. Sobre pilha dinâmica podemos afirmar que : 
 
 
 insere-se em qualquer posição, antes ou após qualquer nó, visto que é dinâmica. 
 só pode ter seus dados impressos no sentido do último nó para o primeiro nó. 
 é recomendada para qualquer tipo de aplicação em que insere-se no final e retira-se do 
início. 
 usa o critério LIFO e é implementada usando-se listas encadeadas. 
 usa o critério FIFO, visto que é dinâmica. 
 Gabarito Comentado. 
 
 
 
 
 5a Questão (Ref.: 201401327767) 
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. 
 
 
 Permitem agregar mais do que um valor em uma variável, existindo uma relação estrutural entre seus 
elementos. 
 
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. 
 
Também são denominados tipos primitivos, não é possível decompor em partes menores. 
 
São tipos de dados indivisíveis. 
 
Podem armazenar apenas um valor de cada vez, se algum valor for atribuído o anterior é apagado. 
 Gabarito Comentado. 
 
 
 
 
 6a Questão (Ref.: 201401327752) 
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 nome do campo 
 
Nome da estrutura ponto tipo do campo 
 
Nome da estrutura vírgula tipo do campo 
 
Nome da estrutura seta nome do campo 
 Gabarito Comentado. 
 
 
Exercício: CCT0260_EX_A10_201401272398 Voltar 
Aluno(a): VALERIOS RICARD SOUZA LIMA Matrícula: 201401272398 
 Data: 04/11/2014 21:24:29 (Finalizada) 
 
 
 1a Questão (Ref.: 201401330823) 
Em algumas situações, principalmente na utilização de listas, há a necessidade de posicionar o ponteiro em 
determinado local da lista. Dessa forma, analisando o trecho de código abaixo, que mostra uma função, assinale 
a alternativa correta que descreve o objetivo desta. Sabe-se que o sinal de asterisco (*) sinalizaum ponteiro. 
void funcao (Nodo **P){ 
 if ( *P != NULL ){ 
 while ( (*P) -> Anterior != NULL ) 
 *P= (*P) -> Anterior; 
 } 
} 
 
 
 
Posicionar o ponteiro onde houver o valor NULL 
 
Posicionar o ponteiro no meio da lista 
 
Posicionar o ponteiro no final da lista 
 
Colocar o valor NULL em todos os ponteiros 
 Posicionar o ponteiro no início da lista 
 Gabarito Comentado. 
 
 
 
 
 2a Questão (Ref.: 201401327567) 
Marque a afirmativa que represente uma Lista Circular Simplesmente Encadeada: 
 
 
 
Cada ponteiro possui um só endereço que referencia o "primeiro" nó da lista. 
 O ponteiro do "último" nó não é NULL, mas sim aponta de volta para o "primeiro" nó da lista. 
 
Além do campo relativo ao dado, cada nó possui dois ponteiros, 
 
O ponteiro do "primeiro" nó não é NULL, mas sim aponta de volta para o "último" nó da lista, formando 
um ciclo. 
 
Cada nó possui um só ponteiro que referencia o próximo nó da lista. 
 Gabarito Comentado. 
 
 
 
 
 3a Questão (Ref.: 201401327256) 
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: 
 
 
 Encadeada. 
 
Binária. 
 
Estática. 
 
Combinada. 
 Seqüencial. 
 Gabarito Comentado. 
 
 
 
 
 4a Questão (Ref.: 201401327756) 
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 simplesmente encadeada cada nó aponta para nó seguinte e para o nó anterior. 
 
Em uma lista duplamente encadeada cada nó aponta para nó seguinte. 
 
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 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. 
 
 
 
 
 
 5a Questão (Ref.: 201401330815) 
Um tipo de estrutura de dados é declarada em C como: 
typedef struct no *apontador; 
 struct no{ 
 int valor; 
 apontador esq, dir; 
} 
onde esq e dir representam ligações para os dados da esquerda e direita, respectivamente. Qual das seguintes 
alternativas é uma implementação correta da operação que inverte as posições dos dados da esquerda e da 
direita uma estrutura p, onde t é um apontador auxiliar. 
 
 
 
p->dir=t; 
p->esq = p->dir; 
p->dir = t; 
 
t=p; 
p->esq = p->dir; 
p->dir = p->esq; 
 
t=p->dir; 
p->esq = p->dir; 
p->dir = t; 
 
p->esq = p->dir; 
t = p->esq; 
p->dir = t; 
 t=p->dir; 
p->dir = p->esq; 
p->esq = t; 
 
 
 
 
 
 6a Questão (Ref.: 201401327568) 
Marque a afirmativa que represente uma concatenação em listas. 
 
 
 
Intercalar a ordem dos dados da lista do final para o início, atualizando a lista. 
 
Alterar a ordem dos dados da lista do final para o início, atualizando a lista. 
 
Organizar os dados da lista em ordem crescente ou decrescente. 
 
Consiste em dividir a lista em duas outras listas. A quantidade de nós que cada lista terá, depende da 
necessidade. 
 Juntar duas listas, colocando uma lista no final de outra, obtendo, ao final, uma só lista resultante. 
 Gabarito Comentado.

Outros materiais