Buscar

SIMULADO ESTRUTURA DE DADOS 2015

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 27 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 27 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 27 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

Continue navegando


Prévia do material em texto

SIMULADO ESTRUTURA DE DADOS -1 a ( aula 1 a 5) 
Desempenho: 5,0 de 8,0 Data: 04/05/2015 22:41:59 (Finalizada) 
 
 
 1a Questão (Ref.: 201102149340) Pontos: 0,0 / 1,0 
Considere uma estrutura de dados do tipo vetor. Com respeito a tal estrutura, é correto que seus componentes 
são caracteristicamente: 
 
 
Heterogêneos e com acesso FIFO. 
 Heterogêneos e com acesso LIFO. 
 Homogêneos e de acesso aleatório por intermédio de índices. 
 
Homogêneos e com acesso indexado-sequencial. 
 
Heterogêneos e com acesso indexado-sequencial. 
 Gabarito Comentado. 
 
 
 
 
 2a Questão (Ref.: 201102358998) Pontos: 1,0 / 1,0 
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. 
 
 II e V são verdadeiras 
 II E IV são verdadeiras 
 I e V são verdadeiras 
 I , II e IV são verdadeiras 
 III e V são verdadeiras 
 Gabarito Comentado. 
 
 
 
 
 3a Questão (Ref.: 201102217018) Pontos: 1,0 / 1,0 
Assinale a opção certa. 
 Quando não se escreve o protótipo de uma função ... 
 
 
A chamada da função não poderá ser feita em qualquer hipótese. 
 
O programa não funcionará de forma alguma. 
 
A chamada da função poderá ser feita em qualquer hipótese. 
 
A definição da função deverá ser escrita, obrigatoriamente, após o programa principal. 
 É preciso definir a função antes do programa principal. 
 Gabarito Comentado. 
 
 
 
 
 4a Questão (Ref.: 201102149671) Pontos: 1,0 / 1,0 
É correto afirmar sobre o funcionamento da busca sequencial. 
 
 
Os elementos são pesquisados de acordo com o índice. Melhor caso: o elemento está no meio do meu 
vetor. 
 
Os elementos são pesquisados aleatoriamente. Pior caso: o elemento está no último índice do meu vetor. 
 
Os elementos são pesquisados de acordo com o índice. Melhor caso: o elemento está no último índice do 
meu vetor. 
 
Os elementos são pesquisados de acordo com o índice. Pior caso: o elemento está no primeiro índice do 
meu vetor. 
 Os elementos são pesquisados de acordo com o índice. Pior caso: o elemento está no último índice do 
meu vetor. 
 Gabarito Comentado. 
 
 
 
 
 5a Questão (Ref.: 201102199523) Pontos: 0,0 / 1,0 
É um método de pesquisa ou busca, cujo algoritmo parte do pressuposto de que o vetor está 
ordenado e realiza sucessivas divisões do espaço de busca, comparando o elemento buscado (chave) 
com o elemento no meio do vetor. Se o elemento do meio do vetor for a chave, a busca termina com 
sucesso. Caso contrário, se o elemento do meio vier antes do elemento buscado, então a busca 
continua na metade posterior do vetor. E finalmente, se o elemento do meio vier depois da chave, a 
busca continua na metade anterior do vetor. 
A descrição apresentada trata-se do método denominado busca ...... 
 
 por comparação. 
 binária. 
 
linear. 
 
por contagem. 
 
randômica. 
 Gabarito Comentado. 
 
 
 
 
 6a Questão (Ref.: 201102141401) Pontos: 1,0 / 1,0 
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 reforço e por referência. 
 Por valor e por referência 
 
Por inferência e por valor. 
 
Por teste e por reforço. 
 Gabarito Comentado. 
 
 
 
 
 7a Questão (Ref.: 201102388878) Pontos: 1,0 / 1,0 
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 
 árvore 
 
lista 
 
grafo 
 
fila 
 Gabarito Comentado. 
 
 
 
 
 8a Questão (Ref.: 201102149491) Pontos: 0,0 / 1,0 
Podemos dizer que estrutura de dados é: 
 
 
O que permite o armazenamento e a recuperação de dados independentemente de seu conteúdo. 
 O meio para armazenar e organizar dados com o objetivo de facilitar o acesso e as modificações. 
 Uma sequência de passos computacionais que transforma uma entrada em uma saída previamente 
determinada. 
 
É a saída, que satisfaz a quaisquer restrições impostas pelo problema, necessária para se calcular uma 
solução do problema. 
 
A entrada, que satisfaz a quaisquer restrições impostas pelo problema, necessária para se calcular uma 
solução do problema. 
 Gabarito Comentado. 
 
 
 
 
 9a Questão (Ref.: 201102170932) 
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. 
 
 
Sua 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."; } } 
 
 
Compare com a sua 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."; 
} } 
 
 
 
 10a Questão (Ref.: 201102180301) 
Como é a lógica do LIFO? 
 
 
Sua Resposta: O Primeiro que entra na pilha é o ultimo a sair. Assim como o Ultimo que entra é o Primeiro que 
sai. Last in, First out . Exemplo pilha de alter, onde o ultimo peso colocado será o primeiro a ser retirado. 
 
 
Compare com a sua resposta: O primeiro que entra na pilha é o último que sai. 
 
 
 
Simulado Estrutura de Dados – 2 (aula 1 a 5) 
Desempenho: 6,0 de 8,0 Data: 04/05/2015 23:03:35 (Finalizada) 
 
 
 1a Questão (Ref.: 201102354550) Pontos: 1,0 / 1,0 
 
 Navegadores para internet armazenam os últimos endereços visitados em uma estrutura de 
dados. Cada vez que um novo site é visitado, o endereço do site é adicionado na estrutura de 
endereços. Quando se aciona o retorno ("back"), o navegador permite que o usuário retorne no 
último site visitado e retira o endereço do site da estrutura de dados. 
Assinale a estrutura de dados mais adequada para este problema. 
 
 
fila 
 pilha 
 
lista 
 
árvore 
 
grafo 
 Gabarito Comentado. 
 
 
 
 
 2a Questão (Ref.: 201102141398) Pontos: 0,0 / 1,0 
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 deleção de dados em um computador. 
 
São os nomes dados as variáveis na montagem de uma rotina. 
 É um modo de distribuição e organização de dados em uma rede de computadorde modo que possam 
ser usados de modo eficiente. 
 
É um modo de utilização de dados nos programas de computador. 
 É um modo particular de armazenamento e organização de dados em um computador de modo que 
possam ser usados de modo eficiente. 
 Gabarito Comentado. 
 
 
 
 
 3a Questão (Ref.: 201102740767) Pontos: 1,0 / 1,0 
 Preciso cadastrar todos os interessados em meu novo curso de programação. Qual a estrutura de dados mais 
adequada para modelar este problema, visto que não há qualquer preocupação com ordem de chegada ou saída de 
aluno da turma. 
 
 Fila 
 Lista 
 Pilha 
 Grafo 
 Árvore 
 
 
 
 4a Questão (Ref.: 201102149329) Pontos: 1,0 / 1,0 
O que acontece ao se inserir uma informação quando já usamos toda a área disponível do vetor (topo = fim)? 
 
 
ordenação 
 
inclusão 
 overflow 
 
underflow 
 
remoção 
 Gabarito Comentado. 
 
 
 
 
 5a Questão (Ref.: 201102216963) Pontos: 1,0 / 1,0 
A estrutura de dados linear que obedece o seguinte critério: o último elemento inserido será o primeiro 
elemento a ser retirado (LIFO) é: 
 
 
fila. 
 
árvore AVL. 
 
árvore binária. 
 pilha. 
 
lista circular. 
 Gabarito Comentado. 
 
 
 
 
 6a Questão (Ref.: 201102149498) Pontos: 1,0 / 1,0 
Estão entre algumas das possíveis formas de se estruturar dados: 
 
 
Grafos, lista ordenada, algoritmos. 
 
Grafos, algoritmos, fila. 
 Grafos, lista ordenada, vetores. 
 
Algoritmos, lista ordenada, vetores. 
 
Lista encadeada, vetores, algoritmos. 
 Gabarito Comentado. 
 
 
 
 
 7a Questão (Ref.: 201102763416) Pontos: 0,0 / 1,0 
As estruturas de dados são utilizadas para manter dados ou informações organizados na memória, o que 
possibilita a otimização do uso destes dados. Porém, as estruturas guardam características especiais na 
manipulação destes dados, assim deve-se escolher a estrutura certa ou mais adequada para uma determinada 
aplicação. Portanto marque a opção que representa a melhor estrutura, quando se tem como requisitos 
principais o acesso aleatório aos dados e alocação destes de forma contínua na memória. 
 
 
Fila Sequencial 
 Lista Sequencial 
 Lista Encadeada 
 
Pilha Encadeada 
 
Pilha Sequencial 
 
 
 
 8a Questão (Ref.: 201102149673) Pontos: 1,0 / 1,0 
Sobre o funcionamento da busca binária, é incorreto afirmar que dividindo seu vetor em duas metades. 
 
 
Se o item for menor ao item que está na primeira posição do vetor, o item não foi encontrado. 
 
Se o item for igual ao 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 não foi encontrado. 
 
Se o item for maior que o item que está na metade do vetor procure na segunda metade, ou seja, a da 
direita. 
 
Se o item for menor que o item que está na metade do vetor, procure na primeira metade, ou seja, a da 
esquerda. 
 Gabarito Comentado. 
 
 
 
 
 9a Questão (Ref.: 201102180302) 
Como é a lógica do FIFO? 
 
 
Sua Resposta: Primeiro que entra é o primeiro a sair. exemplo fila do banco o primeiro que entra é o primeiro a 
ser atendido. 
 
 
Compare com a sua resposta: O primeiro que entra na fila é o primeiro que sai. 
 
 
 
 10a Questão (Ref.: 201102177994) 
 Os agentes Leo e Lia 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). 
 
 
Sua Resposta: 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; } 
 
 
Compare com a sua resposta: 
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; 
} 
 
SIMULADO 3 ( aula 1 a 5) 
Desempenho: 6,0 de 8,0 Data: 04/05/2015 23:16:54 (Finalizada) 
 
 
 1a Questão (Ref.: 201102354583) Pontos: 0,0 / 1,0 
 
 
 por inserção. 
 bubblesort. 
 uma mistura dos métodos de ordenação por inserção e bubblesort. 
 por seleção. 
 
 
 uma mistura dos métodos de ordenação por seleção e por inserção. 
 Gabarito Comentado. 
 
 
 
 
 2a Questão (Ref.: 201102352123) Pontos: 1,0 / 1,0 
Entre os diversos algoritmos de pesquisa existentes, certamente os mais famosos são os da pesquisa 
sequencial e o da pesquisa binária. A busca ou pesquisa sequencial pode ser aplicada em vetores 
independente destes estarem ordenados, entretanto a busca binária só se aplica em vetores ordenados. 
Seja o vetor A= {10,35,41,55,69,70,98}, suponha que o número 70 foi pesquisado pelo algoritmo da 
busca sequencial e também pelo algoritmo da busca binária, ambos algoritmos realizam testes nos 
elementos do vetor até achar o que procuram ou definirem que o elemento não se encontra no vetor. 
Sendo assim marque a alternativa que expressa o número de testes realizados pela busca sequencial e 
o número de testes realizados pela busca binária, respectivamente, até encontrarem o 70. 
 
 
5 e 5 
 6 e 2 
 
6 e 4 
 
7 e 1 
 
6 e 1 
 Gabarito Comentado. 
 
 
 
 
 3a Questão (Ref.: 201102216977) Pontos: 0,0 / 1,0 
Quando as inserções e as remoções ocorrem sempre no mesmo lado da lista, trata-se de uma estrutura de 
dados denominada. 
 
 Pilha. 
 Lista encadeada. 
 
Lista circular. 
 
Fila. 
 
Vetor. 
 Gabarito Comentado. 
 
 
 
 
 4a Questão (Ref.: 201102149833) Pontos: 1,0 / 1,0 
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? 
 
 
Após a operação de remoção incrementa a variável indicadora de posição. 
 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 inicio. 
 
Antes a operação de remoção decrementa a variável indicadora de posição. 
 
Antes da operação de remoção incrementa a variável indicadora de posição. 
 Gabarito Comentado. 
 
 
 
 
 5a Questão (Ref.: 201102763413) Pontos: 1,0 / 1,0 
Entre os diversos algoritmos de pesquisa existentes, certamente os mais famosos são os da pesquisa sequencial 
e o da pesquisa binária. A busca ou pesquisa sequencial pode ser aplicada em vetores independente destes 
estarem ordenados, entretanto a busca binária só se aplica em vetores ordenados. Seja o vetorA= 
{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. 
 
 
7 e 1 
 
5 e 5 
 
6 e 1 
 6 e 2 
 
6 e 4 
 
 
 
 6a Questão (Ref.: 201102364902) 
 Considere uma lista não ordenada de códigos espiões usados por Sherlock Silva. Ajude-o a 
encontrar um determinado código c, realizando uma busca de acordo com o seguinte 
protótipo: 
 int pesquisar(int v[ ], int c, int n); 
Note : v é o vetor de códigos, c é o código a ser procurado e n é a quantidade de códigos 
existentes em v. 
 
 
Sua Resposta: bool intersecao(int v[], int c, int &n) { bool achou = false; for (int i = 0; i < v; i++) for (int j = 0; j < 
v; j++) if (v[i] == n[j]) { inter[n] = v[i]; achou = true; n++; } return achou; } 
Compare com a sua resposta:
 
 
 
 
 7a Questão (Ref.: 201102149767) Pontos: 1,0 / 1,0 
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. 
 
 
Heapsort 
 
Bolha 
 
Seleção 
 Inserção 
 
Quicksort 
 Gabarito Comentado. 
 
 
 
 
 8a Questão (Ref.: 201102149349) Pontos: 1,0 / 1,0 
Pilha é uma estrutura de dados 
 
 
Que pode ser implementada somente por meio de vetores. 
 
Cujo acesso aos seus elementos ocorre de forma aleatória. 
 Cujo acesso aos seus elementos segue a lógica LIFO. 
 
Que pode ser implementada somente por meio de listas. 
 
Cujo acesso aos seus elementos segue tanto a lógica LIFO quanto a FIFO. 
 Gabarito Comentado. 
 
 
 
 
 9a Questão (Ref.: 201102180302) 
Como é a lógica do FIFO? 
 
 
Sua Resposta: O primeiro que entra na fila é o primeiro que sai. 
 
 
Compare com a sua resposta: O primeiro que entra na fila é o primeiro que sai. 
 
 
 
 10a Questão (Ref.: 201102216982) Pontos: 1,0 / 1,0 
Sobre estrutura de dados, identifique o que está correto afirmar. 
I. Pilha é uma estrutura de dados com acesso restrito aos seus elementos, uma vez que eles são colocados e 
retirados por um único lado e são ordenados pelo princípio LIFO (last in first out). Assim, sempre que um 
elemento é adicionado ou retirado seu topo é alterado. 
II. Pilha é o tipo de estrutura usada, por exemplo, na avaliação de expressões numéricas, na recursividade e 
pelos compiladores, na passagem de parâmetros para as funções. 
III. Registro é uma estrutura básica que permite guardar coleções de dados de diferentes tipos, sendo 
normalmente utilizado quando um objeto tem diferentes atributos, isto é, contém campos de diferentes tipos. 
IV. Lista pode conter um número qualquer de elementos, expandindo-se ou contraindo-se conforme o 
elementos são inseridos ou retirados. Nesse tipo de estrutura, os acessos tanto podem ser feitos 
sequencialmente como diretamente. 
V. Fila, assim como a pilha , é uma versão especial de lista, e como tal, seus elementos são ordenados pelo 
princípio LIFO (last in first out). 
 
 I, II e III. 
 
I, III e V. 
 
II, IV e V. 
 
II, III, IV e V. 
 
I, III, IV e V. 
 Gabarito Comentado. 
 
 
 
 
SIMULADO 2 a – ( aula 6 a 10) 
Desempenho: 2,0 de 8,0 Data: 03/06/2015 21:35:48 (Finalizada) 
 
 
 1a Questão (Ref.: 201102719714) Pontos: / 1,0 
A linguagem C++ oferece quatro meios de criação de tipos de dados: matrizes, estruturas ou structs, uniões e 
classes. As estruturas, que passaremos a chamar simplesmente de structs, são tipos de variáveis que agrupam 
dados geralmente desiguais, enquanto matrizes são variáveis que agrupam dados similares. Devido a esta 
característica as structs são utilizadas para modelar nodos (nós) de estruturas dinâmicas. Portanto podemos 
afirmar que: 
 
 
As estruturas dinâmicas são assim chamadas, pois não podem fazer alocação de memória em tempo de 
execução, mas mesmo assim conseguem ter seus tamanhos alterados de acordo com a demanda. 
 
As estruturas dinâmicas são assim chamadas, pois podem fazer alocação de memória em tanto em 
tempo de execução quanto em tempo de compilação, mas não podem ter seus tamanhos alterados de 
acordo com a demanda. 
 
As estruturas dinâmicas são assim chamadas, pois podem fazer alocação de memória em tempo de 
compilação e entretanto seus tamanhos só são alterados na codificação de acordo com a demanda. 
 
As estruturas dinâmicas são assim chamadas, pois podem fazer alocação de memória em tempo de 
execução e terem seus tamanhos alterados de acordo com a demanda. 
 
As estruturas dinâmicas são assim chamadas, pois podem fazer alocação de memória em tempo de 
compilação e terem seus tamanhos alterados de acordo com a demanda. 
 
 
 
 2a Questão (Ref.: 201102689133) Pontos: / 1,0 
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 quando usamos 
matrizes. 
IV Quando formos empilhar um elemento, é preciso verificar se a pilha não está cheia. Isso evita underflow. 
V Quando formos desempilhar um elemento, é preciso verificar se a pilha não está vazia. Isso evita overflow. 
 
 I, IV e V estão corretas 
 II, IV e V estão corretas 
 I, IV e V estão corretas 
 I e III estão corretas 
 Somente a I está correta 
 Gabarito Comentado. 
 
 
 
 
 3a Questão (Ref.: 201102389686) Pontos: 0,0 / 1,0 
Um programa desenvolvido para cadastrar grupos de 20 ajudantes especiais 
para atuarem em cada um dos 12 estádios sede da copa do mundo de futebol 
no Brasil, utiliza um critério especial para alocação dos grupos de ajudantes nos 
estádios. Isto é, considerando o estádio sede origem o Maracanã no Rio de 
Janeiro, os 20 últimos candidatos a se escreverem ficarão no estádio mais 
distante do Maracanâ, o penúltimo grupo de 20 inscritos, ficarão no segundo 
estádio mais distante do Maracanã, assim por diante até que, o segundo grupo 
de candidados inscritos ficarão no estádio sede mais próximo do Maracanâ e os 
primeiros candidatos escritos serão alocados no Maracanã. Para auxiliar o 
desenvolvimento deste programa pode-se utilizar: 
 
 Uma pilha sequencial de 20 posições para fase do cadastramento de 
todos os candidatos e uma fila sequencial de 20 posições para realizar 
as alocações de todos os candidatos começando pelos os estádios mais 
distantes do estádio sede. 
 Uma fila sequencial de 20 posições para fase do cadastramento de 
todos os candidatos e a mesma estrutura para realizar as alocações 
começando pelos os estádios mais distantes do estádio sede. 
 Uma pilha sequencial de 20 posições para fase do cadastramento de 
todos os candidatos e a mesma estrutura para realizar as alocações 
começandopelos os estádios mais distantes do estádio sede. 
 Uma pilha sequencial de 240 posições para fase do cadastramento de 
todos os candidatos e a mesma estrutura para realizar as alocações 
começando pelos os estádios mais distantes do estádio sede. 
 Uma fila sequencial de 240 posições para fase do cadastramento de 
todos os candidatos e a mesma estrutura para realizar as alocações 
começando pelos os estádios mais distantes do estádio sede. 
 Gabarito Comentado. 
 
 
 
 
 4a Questão (Ref.: 201102389701) Pontos: 1,0 / 1,0 
Considere dados sendo manipulados em uma pilha sequencial em que as 
operações possíveis são: inserção - push(novo valor) ou remoção - pop(). 
Se realizarmos a seguinte sequencia de operações: 
push(A),push(B),push(C),pop(),pop(),push(D),pop(),pop(),pop(). 
Pode-se dizer que interior da pilha apresenta-se: 
 
 Vazio 
 Apenas com o dado D 
 Com os dados A e D 
 Com os dados A e B 
 Apenas com o dado A 
 Gabarito Comentado. 
 
 
 
 
 5a Questão (Ref.: 201102361973) Pontos: 0,0 / 1,0 
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. 
 
 Pilha 
 Fila 
 Fila Circular 
 Lista Linear 
 Lista simplesmente encadeada 
 Gabarito Comentado. 
 
 
 
 
 6a Questão (Ref.: 201102149850) Pontos: 0,0 / 1,0 
Sistemas operacionais utilizam filas para gerenciar, tarefas, processos e recursos. Qual é a ordenação dos 
elementos armazenados aleatoriamente em uma lista do tipo LIFO? 
 
 
Ordem decrescente 
 Ordem crescente 
 
Primeiro que entra é o primeiro a sair 
 
Posições aleatórias 
 Ordem de entrada 
 Gabarito Comentado. 
 
 
 
 
 7a Questão (Ref.: 201102387730) Pontos: 0,0 / 1,0 
Montei uma biblioteca popular que aceita doações sem limites. Marque a opção que especifica o tipo de lista e o 
tipo de alocação de memória mais adequados para este problema. 
 
 fila encadeada e alocação dinâmica de memória 
 
pilha dinâmica e alocação dinâmica de memória 
 
fila dinâmica e alocação dinâmica de memória 
 
lista sequencial e alocação dinâmica de memória 
 lista encadeada e alocação dinâmica de memória 
 Gabarito Comentado. 
 
 
 
 
 8a Questão (Ref.: 201102389728) Pontos: 1,0 / 1,0 
As variáveis são na verdade trecho de memórias que armazenam dados de 
diversas naturezas, portanto sempre que declara-se uma variável, na 
linguagem C++, é necessário informar o tipo de dado que esta irá armazenar. 
Um tipo especial de variáveis são os ponteiros, isto é, variáveis que 
armazenam apenas os endereços de outras variáveis. Assim os ponteiros 
são usados para que se possa acessar de forma indireta uma outra variável. 
Sabendo-se disto e supondo que o endereço na memória da variável "a" é 
100 e o endereço da memória da variável ponteiro é 200, analise o trecho de 
código abaixo e marque a alternativa que representa a saída do programa: 
 
 
 
 9 100 200 
 100 9 200 
 200 9 100 
 100 100 200 
 9 9 200 
 
 
 
 9a Questão (Ref.: 201102792322) 
Uma fila é também uma lista linear, mas para esta estrutura as inserções só podem ser efetuadas 
em um extremo da lista, e todas as retiradas (e geralmente os acessos) são realizados no outro 
extremo da lista. 
A partir do struct abaixo, crie uma função em C++ (somente o trecho da função) para remover um 
elemento inteiro no fim da fila. 
#define TAM 100 
struct tfila{ 
 int F, R; 
 int vetor [TAM]; 
}; 
 
 
Sua Resposta: tfila* retira (tfila* l, int v) { tfila* ant = NULL; tfila* p = l; 
 
 
Compare com a sua resposta: 
int remove_fila(struct tfila *pf) 
{ 
 int y; 
 if (pf->F > pf->R) 
 return 0; 
 y=pf->vetor[pf->F]; 
 pf->F++; 
 return y; 
} 
 
 
 
 10a Questão (Ref.: 201102792320) 
Uma fila é também uma lista linear, mas para esta estrutura as inserções só podem ser efetuadas 
em um extremo da lista, e todas as retiradas (e geralmente os acessos) são realizados no outro 
extremo da lista. 
A partir do struct abaixo, crie uma função em C++ (somente o trecho da função) para inserir um 
elemento inteiro no fim da fila. 
#define TAM 100 
struct tfila{ 
 int F, R; 
 int vetor [TAM]; 
}; 
 
 
 
Sua Resposta: tfila* insere (tfila* l, int F) { tfila* novo = (tfila*) malloc(sizeof(tfila)); novo->info = F; novo-
>prox = R; return novo; } 
 
 
Compare com a sua resposta: 
int insere_fila(struct tfila *pf, int elem) 
{ 
If(pf->R==TAM-1) 
 return 0; 
pf->R++; 
pf->vetor[pf->R] = elem; 
return 1; 
} 
 
SIMULDADO 2 b ( AULA 6 a 10) 
 
Desempenho: 5,0 de 8,0 Data: 03/06/2015 21:51:53 (Finalizada) 
 
 
 1a Questão (Ref.: 201102740853) Pontos: 0,0 / 1,0 
 Considere uma fila simples F de inteiros, do tipo Fila definido abaixo. Tal fila deverá armazenar códigos de agentes de uma 
firma de espionagem, desde que haja espaço para um novo agente. Assinale a opção que corretamente desenfileira o código 
de um agente, sabendo que a fila F foi inicializada de acordo com o trecho de código abaixo. 
struct Fila { in t v[100], inicio, fim; } ; 
Fila F; 
F. inicio = 0; 
F.fim = -1; 
 
 
 
 
 
void desenfileirar(Fila F) { 
 cout << "Removido o agente " << F.v[F.inicio]; 
 F.inicio--; 
 } 
 
 
 
void desenfileirar(Fila &F) { 
 if (F.fim == -1 && F.inicio == 0) 
 cout << "Não há agentes para retirar. " << endl; 
 else { 
 cout << "Removido o agente " << F.v[F.inicio]; 
 F.inicio++; 
 } 
} 
 
 
void desenfileirar(Fila F) { 
 if (F.inicio > F.fim) 
 cout << "Não há agentes para retirar. " << endl; 
 else { 
 cout << "Removido o agente " << F.v[F.inicio]; 
 F.inicio++; 
 } 
} 
 
 
void desenfileirar(Fila &F) { 
 if (F.inicio > F.fim) 
 cout << "Não há agentes para retirar. " << endl; 
 else { 
 cout << "Removido o agente " << F.v[F.inicio]; 
 } 
} 
 void desenfileirar(Fila &F) { 
 if (F.inicio > F.fim) 
 cout << "Não há agentes para retirar. " << endl; 
 else { 
 cout << "Removido o agente " << F.v[F.inicio]; 
 F.inicio++; 
 } 
} 
 
 
 
 2a Questão (Ref.: 201102388869) Pontos: 0,0 / 1,0 
Tenho uma lista encadeada de processos para ler e despachar, mas obedeço a ordem de chegada, ou seja, 
o primeiro processo que chega é o primeiro processo a ser atendido por mim. Sabendo que cada processo 
é do tipo Processo, previamente definido e que a lista é do tipo Lista, assinale a opção que corretamente 
implementa a retirada de um processo da lista, que pode ter um ou mais processos. 
 Considere p um ponteiro para o primeiro nó da lista e ainda, 
struct Lista { 
 Processo p; 
 struct Lista *link; 
 }; 
 
 Lista retirar(Lista *p) 
{ 
 Lista *aux = p; 
 p = p->link; 
 return p; 
} 
 Lista *retirar(Lista *p) 
{Lista *aux = p; 
 while (p->link->link !=NULL) 
 p = p->link; 
 p->link = NULL; 
 return p; 
} 
 Lista *retirar(Lista *p) 
{ 
 Lista *aux = p; 
 p = p->link; 
 delete aux; 
 return p; 
} 
 Lista *retirar(Lista *p) 
{ 
 delete p; 
 p = p->link; 
 return p; 
} 
 Lista *retirar(Lista *p) 
{ 
 Lista *aux = p; 
 while (p->link->link !=NULL) 
 p = p->link; 
 delete p->link; 
 p->link = NULL; 
 return p; 
} 
 Gabarito Comentado. 
 
 
 
 
 3a Questão (Ref.: 201102149877) Pontos: 1,0 / 1,0 
Na área de estrutura de dados, em determinados casos, é necessário utilizar um tipo de dado onde seu valor 
serve como referência direta a outro valor alocado em outro espaço de memória. Este tipo de dado se chama: 
 
 
Matriz 
 
Vetor 
 Ponteiro 
 
Endereço 
 
Variável 
 Gabarito Comentado. 
 
 
 
 
 4a Questão (Ref.: 201102149311) Pontos: 1,0 / 1,0 
Um apontador é uma variável que contém o endereço de outra variável. Apontadores são muito usados, em 
parte porque são, às vezes, a única forma de se expressar um processo de computação e, em parte, porque, 
normalmente, implicam um código mais compacto e eficiente que o obtido de outras formas. Considerando o 
uso de apontadores nas linguagens procedurais atuais, julgue os itens que se seguem com E se for errado e C 
se for certo. 
( ) O uso de apontadores como argumentos de funções que realizem chamada por valor não permite alteração 
de seus conteúdos de memória na função. 
( ) Com apontadores, é possível criar funções que retornem estruturas de dados complexas. 
( ) Para recuperar o valor da variável apontada, basta que o apontador seja atribuído a uma variável de mesmo 
tipo. 
( ) Arranjos de apontadores podem ser usados em funções que recebam como argumentos um número variável 
de cadeias de caracteres. 
( ) Em geral, para que um arranjo seja percorrido por um ponteiro, para cada elemento do arranjo deve-se 
adicionar ao ponteiro o número de bytes que o elemento ocupa em memória. 
 
 a) E - C - E - C - E 
 
e) C - E - C - E - C 
 
b) C - C - E - E - E 
 
c) E - E - C - C - E 
 
d) E - C - E - C - C 
 Gabarito Comentado. 
 
 
 
 
 5a Questão (Ref.: 201102763420) Pontos: 1,0 / 1,0 
Usa-se um vetor para se implementar uma fila sequencial, entretanto se nesta estrutura ocorrer diversas 
operações de remoção e inserção podemos afirmar que: 
 
 
Um vetor não pode ser usado na implementação de uma fila sequencial apenas em pilhas sequenciais. 
 
Um vetor é uma estrutura base correta para esta implementação, já que está imune a fenômenos como 
esgotamento de memória. 
 
A estrutura fila não sofre esgotamento de memória, isto ocorre com as pilhas já que implementam o 
algoritmo LIFO. 
 A estrutra sofrerá do fenômeno chamado esgotamento de memória e logo não poderá mais ser utilizada. 
A solução é o uso da fila circular. 
 
A estrutra sofrerá do fenômeno esgotamento de memória, mas se os dados estiverem ordenados isto 
não afetará a estrutura. 
 
 
 
 6a Questão (Ref.: 201102149853) Pontos: 0,0 / 1,0 
A armazenagem de dados pode ocorrer temporariamente em uma variável, um vetor ou em uma estrutura 
chamada Struct na linguagem C e C++. Como se procede a atribuição de valor a um determinado campo de 
uma estrutura do tipo Struct? 
 
 Nome da estrutura vírgula tipo do campo 
 
Nome da estrutura seta nome do campo 
 Nome da estrutura ponto nome do campo 
 
Nome da estrutura seta tipo do campo 
 
Nome da estrutura ponto tipo do campo 
 Gabarito Comentado. 
 
 
 
 
 7a Questão (Ref.: 201102734981) Pontos: 1,0 / 1,0 
O que acontece quando se deseja inserir um elemento em uma FILA que já está cheia? 
 
 Overflow. 
 
Underflow. 
 
A inserção é feita sem problema. 
 
Dequeue. 
 
Enqueue. 
 
 
 
 8a Questão (Ref.: 201102688976) Pontos: 1,0 / 1,0 
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. 
 
 II e III estão corretas. 
 I, II e IV estão corretas. 
 I e IV estão corretas. 
 I e II estão corretas. 
 I, II e V estão corretas. 
 Gabarito Comentado. 
 
 
 
 
 9a Questão (Ref.: 201102792853) 
Desenvolva uma função em C++ para construir uma fila Q com valores inteiros positivos, inseridos a partir do 
teclado. 
 
 
Sua Resposta: #include <stdio.h> #include <stdlib.h> struct Node{ int num; struct Node *prox; }; typedef 
struct Node node; int tam; int menu(void); void opcao(node *FILA, int op); void inicia(node *FILA); int 
vazia(node *FILA); node *aloca(); void insere(node *FILA); node *retira(node *FILA); void exibe(node *FILA); 
void libera(node *FILA); int main(void) { node *FILA = (node *) malloc(sizeof(node)); if(!FILA){ printf("Sem 
memoria disponivel!\n"); exit(1); }else{ inicia(FILA); int opt; do{ opt=menu(); opcao(FILA,opt); }while(opt); 
free(FILA); return 0; } } int menu(void) { int opt; printf("Escolha a opcao\n"); printf("0. Sair\n"); printf("1. 
Zerar fila\n"); printf("2. Exibir fila\n"); printf("3. Adicionar Elemento na Fila\n"); printf("4. Retirar Elemento da 
Fila\n"); printf("Opcao: "); scanf("%d", &opt); return opt; } void opcao(node *FILA, int op) { node *tmp; 
switch(op){ case 0: libera(FILA); break; case 1: libera(FILA); inicia(FILA); break; case 2: exibe(FILA); break; 
case 3: insere(FILA); break; case 4: tmp= retira(FILA); if(tmp != NULL){ printf("Retirado: %3d\n\n", tmp-
>num); libera(tmp); } break; default: printf("Comando invalido\n\n"); } } void inicia(node *FILA) { FILA->prox 
= NULL; tam=0; } int vazia(node *FILA) { if(FILA->prox == NULL) return 1; else return 0; } node *aloca() { 
node *novo=(node *) malloc(sizeof(node)); if(!novo){ printf("Sem memoria disponivel!\n"); exit(1); }else{ 
printf("Novo elemento: "); scanf("%d", &novo->num); return novo; } } void insere(node *FILA) { node 
*novo=aloca(); novo->prox = NULL; if(vazia(FILA)) FILA->prox=novo; else{ node *tmp = FILA->prox; 
while(tmp->prox != NULL) tmp = tmp->prox; tmp->prox = novo; } tam++; } node *retira(node *FILA) { 
if(FILA->prox == NULL){ printf("Fila ja esta vazia\n"); return NULL; }else{ node *tmp = FILA->prox; FILA-
>prox = tmp->prox; tam--; return tmp; } } void exibe(node *FILA) { if(vazia(FILA)){ printf("Fila vazia!\n\n"); 
return ; } node *tmp; tmp = FILA->prox; printf("Fila :"); while( tmp != NULL){ printf("%5d", tmp->num); tmp 
= tmp->prox; } printf("\n "); int count; for(count=0 ; count < tam ; count++) printf(" ^ "); 
printf("\nOrdem:"); for(count=0 ; count < tam ; count++) printf("%5d", count+1); printf("\n\n"); } void 
libera(node *FILA) { if(!vazia(FILA)){ node *proxNode, *atual; atual = FILA->prox; while(atual != NULL){ 
proxNode = atual->prox; free(atual); atual = proxNode; } } } 
 
 
Compare com a sua resposta: 
PNodo ConstruirFila () { 
 int X; 
PNodo Q; 
Q = Criar(); 
cout<<"Inserir um inteiro positivo (negativo para terminar): \n"; 
cin>>X; 
while (X > 0) { 
Q = Juntar(X, Q); 
cout<<"Inserir um inteiro positivo (negativo para terminar): \n"; 
cin>>X; 
} 
return Q; 
} 
 
 
 
 10a Questão (Ref.: 201102792800)Suponha que o nó tenha como membro um número inteiro fora o ponteiro. Defina uma estrutura (struct) em 
C++ struct para uma lista com um nó. 
 
 
Sua Resposta: #include <stdio.h>#include <stdlib.h>struct Node{ int num; struct Node *prox;};typedef struct 
Node node;int tam;int menu(void);void opcao(node *FILA, int op);void inicia(node *FILA);int vazia(node 
*FILA);node *aloca();void insere(node *FILA);node *retira(node *FILA);void exibe(node *FILA);void 
libera(node *FILA);int main(void){ node *FILA = (node *) malloc(sizeof(node)); if(!FILA){ printf("Sem memoria 
disponivel!\n"); exit(1); }else{ inicia(FILA); int opt; do{ opt=menu(); opcao(FILA,opt); }while(opt); free(FILA); 
return 0; }}int menu(void){ int opt; printf("Escolha a opcao\n"); printf("0. Sair\n"); printf("1. Zerar fila\n"); 
printf("2. Exibir fila\n"); printf("3. Adicionar Elemento na Fila\n"); printf("4. Retirar Elemento da Fila\n"); 
printf("Opcao: "); scanf("%d", &opt); return opt;}void opcao(node *FILA, int op){ node *tmp; switch(op){ case 
0: libera(FILA); break; case 1: libera(FILA); inicia(FILA); break; case 2: exibe(FILA); break; case 3: 
insere(FILA); break; case 4: tmp= retira(FILA); if(tmp != NULL){ printf("Retirado: %3d\n\n", tmp->num); 
libera(tmp); } break; default: printf("Comando invalido\n\n"); }}void inicia(node *FILA){ FILA->prox = NULL; 
tam=0;}int vazia(node *FILA){ if(FILA->prox == NULL) return 1; else return 0;}node *aloca(){ node 
*novo=(node *) malloc(sizeof(node)); if(!novo){ printf("Sem memoria disponivel!\n"); exit(1); }else{ 
printf("Novo elemento: "); scanf("%d", &novo->num); return novo; }}void insere(node *FILA){ node 
*novo=aloca(); novo->prox = NULL; if(vazia(FILA)) FILA->prox=novo; else{ node *tmp = FILA->prox; 
while(tmp->prox != NULL) tmp = tmp->prox; tmp->prox = novo; } tam++;}node *retira(node *FILA){ 
if(FILA->prox == NULL){ printf("Fila ja esta vazia\n"); return NULL; }else{ node *tmp = FILA->prox; FILA-
>prox = tmp->prox; tam--; return tmp; }}void exibe(node *FILA){ if(vazia(FILA)){ printf("Fila vazia!\n\n"); 
return ; } node *tmp; tmp = FILA->prox; printf("Fila :"); while( tmp != NULL){ printf("%5d", tmp->num); tmp 
= tmp->prox; } printf("\n "); int count; for(count=0 ; count < tam ; count++) printf(" ^ "); 
printf("\nOrdem:"); for(count=0 ; count < tam ; count++) printf("%5d", count+1); printf("\n\n");}void 
libera(node *FILA){ if(!vazia(FILA)){ node *proxNode, *atual; atual = FILA->prox; while(atual != NULL){ 
proxNode = atual->prox; free(atual); atual = proxNode; } }} 
 
 
Compare com a sua resposta: 
struct nodo 
{ 
 int num; 
 struct nodo* prox; 
}; 
 
SIMULADO 2 c ( AULA 6 a 10 ) 
Desempenho: 6,0 de 8,0 Data: 03/06/2015 22:04:37 (Finalizada) 
 
 
 1a Questão (Ref.: 201102387727) Pontos: 1,0 / 1,0 
Na pequena mercearia do Sr. Manuel os pedidos são anotados no papel e assim que montam um lote com 10 
listas de compras dos fregueses, as entregas começam. As compras de cada freguês são postas em uma caixa. 
As caixas são organizadas no veículo de entrega respeitando a ordem da entrega, ou seja, a 1a. caixa a ser 
entregue fica na frente das demais caixas e assim, sucessivamente. Dessa forma, a última caixa a ser entregue 
ficará no final do veículo, após todas as outras caixas que deverão ser entregues primeiro. Qual a estrutura de 
dados mais adequada que traduz a organização das pizzas no veículo de entrega ? 
 
 
fila 
 
lista 
 
árvore 
 pilha 
 
grafo 
 Gabarito Comentado. 
 
 
 
 
 2a Questão (Ref.: 201102141419) Pontos: 1,0 / 1,0 
Um órgão público adotou dois sistemas de senhas para atender os cidadãos na ordem de chegada. O sistema I 
atende os não idosos. O sistema II atende os idosos. Nessa situação: 
 
 tanto o sistema I, quanto o II, adotam o esquema FIFO de organização de dados. 
 
tanto o sistema I, quanto o II, adotam o esquema LIFO de organização de dados. 
 
o sistema I, adota o esquema LIFO de organização de dados e o II, o esquema LIFO. 
 
o sistema I, adota o esquema LIFO de organização de dados e o II, o esquema FIFO. 
 
tanto o sistema I, quanto o II, adotam o esquema vetor de organização de dados. 
 Gabarito Comentado. 
 
 
 
 
 3a Questão (Ref.: 201102149854) Pontos: 1,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: 
 
 
Bolha 
 
Matriz 
 
Struct 
 
Pilha 
 Fila 
 Gabarito Comentado. 
 
 
 
 
 4a Questão (Ref.: 201102689067) Pontos: 1,0 / 1,0 
Observe a função que manipula uma pilha e assuma que TAM é uma constante definida com valor 5. Saiba 
que o nome da função já explícita a finalidade dela. 
 
Considere a chamada da função conforme linha abaixo, sabendo-se que vet é um vetor de tamanho 5 e que 
não tem nenhum valor ainda: 
 
 
Analise as afirmativas abaixo que sugerem correções, ou não, na definição na função e assinale a opção 
que contem as afirmativas corretas. 
 
I Faltou & antes da variável vetor e irá acusar erro. 
II A variável topo está sem tipo. 
III O teste está correto porque o índice do primeiro elemento do vetor em C++ é 1, obrigatoriamente. 
IV Na linha comentada deveria estar presente um comando de atribuição que decrementaria a variável topo. 
V A linha vetor[topo]=valor; está correta. 
 
 I , III e V estão corretas 
 I, II e IV estão corretas 
 I e III estão corretas 
 II e V estão corretas 
 I e II estão corretas 
 Gabarito Comentado. 
 
 
 
 
 5a Questão (Ref.: 201102387725) Pontos: 0,0 / 1,0 
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 ? 
 
 lista 
 pilha 
 
grafo 
 
fila 
 
árvore 
 Gabarito Comentado. 
 
 
 
 
 6a Questão (Ref.: 201102688305) Pontos: 1,0 / 1,0 
Sabe-se que Push() coloca um elemento na pilha, Pop() remove um elemento da pilha e Top() exibe o 
elemento que se encontra no topo. 
 
Assinale a opção que indica o número que aparecerá após a execução das funções abaixo. 
 
Sequencia: Push() / Push()/ Pop()/ Push()/Pop()/ Top() 
Números que deverão ser empilhados nessa ordem: 8/ 15/ 23/ 13 / 18 
 
 15 
 8 
 23 
 13 
 18 
 Gabarito Comentado. 
 
 
 
 
 7a Questão (Ref.: 201102387724) Pontos: 1,0 / 1,0 
Na pequena pizzaria de Dom Leopoldo os pedidos são anotados em uma planilha e assim que montam um lote 
com 5 pizzas, as entregas começam. As pizzas são organizadas no veículo de entrega respeitando a ordem da 
entrega, ou seja, a 1a. pizza a ser entregue fica na frente de todas e assim, sucessivamente. Dessa forma, a 
última pizza a ser entregue ficará no final do veículo, após todas as outras pizzas. Qual a estrutura de dados é 
mais adequada para modelar a organização das pizzas no veículo de entrega ? 
 
 
fila 
 
árvore 
 
lista 
 pilha 
 
grafo 
 Gabarito Comentado. 
 
 
 
 
 8a Questão (Ref.: 201102389710) Pontos: 0,0 / 1,0 
As estruturas de dados devem ser especificadas de modo que estas auxiliem 
as aplicações em sua principal tarefa ou funcionalidade. Sendo assim, pode-
se desenvolver umaaplicação capaz de fazer a conversão de números da 
base 10, para a base binária, octal ou hexadecimal a partir de um algoritmo 
de divisões sucessivas. Este algoritmo baseia na divisão de um número 
decimal pela base que se deseja a transformação, armazenando o resto da 
divisão em uma estrutura de dados, efetuando nova divisão no resultado 
obtido da divisão prévia, novamente armazenando o resto desta operação na 
estrutura de dados e assim por diante até que o resultado da divisão seja 
zero. Neste momento, a estrutura possui exatamente, na ordem reversa, os 
algarismos correspondentes ao número convertido para a nova base. 
Analisando esta estratégia poder-se-ia dizer que a estrutura de dados mais 
propícia para tal tarefa é : 
 
 Lista 
 Árvore 
 Pilha 
 Grafo 
 Fila 
 Gabarito Comentado. 
 
 
 
 
 9a Questão (Ref.: 201102170795) 
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. 
 
 
Sua Resposta: #include using namespace std; struct no { int dado; struct no *link; }; 
 
 
Compare com a sua resposta: 
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.: 201102791730) 
 Escreva instruções para um programa em C++ a fim de criar uma lista simplesmente encadeada 
não circular com o valor 50. Considere 
 #include 
 using namespace std; 
 struct no { 
 int dado; 
 struct no *link; 
 }; 
 int main() { 
 //As instruções solicitadas farão parte da main 
 } 
 
 
 
Sua Resposta: #include using namespace std; struct no { int dado; struct no *link; }; int main() { //As 
instruções solicitadas farão parte da main } 
 
 
Compare com a sua resposta: 
 
no *p; 
p = new no; 
p->dado = 50; 
p->link = NULL;