Logo Passei Direto
Buscar

SIMULADOS ESTRUTURA DE DADOS - ESTÁCIO 2020 1

Ferramentas de estudo

Questões resolvidas

Para organizar as fotos de minha família com os ancestrais de várias gerações, minha filha usou uma estrutura de dados que é .....
Assinale a opção certa.
pilha
fila
árvore
lista
grafo

As estruturas de dados podem ser caracterizadas como sendo uma forma organizada de armazenar dados ou informações na memória, de modo a otimizar o acesso a estes. Muitas vezes existem algoritmos de manipulação de dados associados a estas estruturas.
Verifique as seguintes sentenças: I-Filas são estruturas que recuperam os dados na ordem direta em que estes foram armazenados. II-As Pilhas são estruturas que recuperam os dados na ordem reversa em que estes foram armazenados. III-As Pilhas são estruturas que recuperam os dados na ordem direta em que estes foram armazenados. IV-As Filas são estruturas que recuperam os dados na ordem reversa em que estes foram armazenados. Marque a alternativa CORRETA:
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.
As alternativas II e IV estão corretas.
As alternativas I e II estão corretas.
Todas as alternativas estão corretas.
As alternativas I e III estão corretas.
As alternativas III e IV estão corretas.

Preciso fazer uma relação de tudo o que levar em minha viagem de mochila pela Europa. A estrutura de dados mais adequada para armazenar tudo que preciso levar é ...
árvore
grafo
fila
lista
pilha

Qual estrutura de dados é mais adequada para armazenar a estrutura do diretório do sistema de arquivos de um sistema operacional?
Fila
Pilha
Grafo
Lista
Árvore

Os irmãos Silva irão viajar por vários países da Europa e por isso, traçaram no mapa o percurso que farão, de cidade a cidade.
Qual a estrutura de dados mais adequada para modelar este problema?
Grafo
Fila
Árvore
Pilha
Lista

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 Encadeada
Fila Sequencial
Pilha Sequencial
Lista Sequencial
Pilha Encadeada

Observe o trecho do programa em C++ abaixo e, após, entrar com os valores sugeridos para sua execução assinale a alternativa que representa a resposta final. cin >> a; cin >> b; cin >> c; cin >> d; cout << a; cout << b; cout << c; cout << d; cout << d; cout << c; cout << b; cout << a; Após a impressão dos valores pela ordem teremos:
uma fila e uma pilha.
uma pilha e um grafo.
duas filas.
duas pilhas.
uma pilha e uma fila.

A forma correta para imprimir o valor do último elemento de um vetor v com n posições é:
cin >> v[-1];
cout << v[n-1];
cout << v[n+1];
cout << v[n];
cout << v[ultimo];

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.

É um exemplo de TAD Não Linear:


Grafos
Pilhas
Filas
Filas de Prioridade
Listas

Assinale a opção CORRETA. O protótipo da função que permitirá calcular o volume de um paralelepípedo com medidas a, b e c de acordo com o trecho da chamada : cout << "Volume = " << volume(a,b,c);
float volume (float, float);
float volume (float ; float ; float);
void volume (float, float, float &);
float volume (float, float, float);
void volume (float , float);

Considere os trechos abaixo: int valor = 100; void eureka (int &z) { int temp = 25; z--; temp = temp - 10; valor = valor - temp; cout << "Auxiliar = " << temp << endl; } int main() { int R = 1000; eureka(R); cout << "Result = " << R << " Valor = " << valor << endl; } Assinale a opção correta.
Será impresso Auxiliar = 15 Result = 999 Valor = 85 sendo que z é um parâmetro passado por referência
Será impresso Auxiliar = 15 Result = 1000 Valor = 100 sendo que z é um parâmetro passado por referência
Será impresso Auxiliar = 15 Result = 999 Valor = 85 sendo que z é um parâmetro passado por valor
Será impresso Auxiliar = 15 Result = 1000 Valor = 85 sendo que z é um parâmetro passado por valor

A declaração de variáveis na programação é o ato de reservar um espaço na memória para poder armazenar valores de um determinado tipo. Essas variáveis podem ser classificadas como variáveis locais e globais. Sendo assim, qual das situações abaixo representa melhor o conceito das variáveis globais.
Em uma função 'resul' tem-se uma variável ali declarada por 'T' que recebe o valor inteiro 5. Ao tentar chamar esta variável em outra função é mencionado um warning.
Em duas funções diferentes temos duas variáveis também diferentes com o mesmo nome apresentando o mesmo valor.
Se dentro de uma função 'mostra' declararmos uma variável 'R' com um determinado valor poderemos imprimir esta variável em qualquer outra função do programa mostrando o valor atribuído na função 'mostra'.
Ao modificar o valor da variável 'X' na função 'modifica' seu valor modificado poderá ser apresentado em qualquer outra função do programa.
Se modificarmos o valor da variável 'Y' na função 'soma', e depois imprimirmos na tela esta variável em outra função, onde também está declarada a variável 'Y', será acusado um erro de compilação.

Ao definirmos uma função, podemos afirmar: I Toda função tem parâmetros II Quando nada retorna, o tipo é void III Quando todos os parâmetros são do mesmo tipo, é suficiente usar o tipo uma vez e separar os nomes dos parâmetros por vírgulas IV Na passagem por valor, o endereço da variável da função chamadora é passado para a função chamada Após uma análise das afirmativas acima, escolha a opção correta.
Somente I e II estão corretas
Somente II III e IV estão corretas
Somente II e IV estão corretas
Somente II e III estão corretas
Somente II está correta

Qual será a saída para o seguinte trecho de código? void FUNC1() { int B = -100; cout << "Valor de B dentro da função FUNC1: " << B; } void FUNC2() { int B = -200; cout << "Valor de B dentro da função FUNC2: " << B; } int main() { int B = 10; cout << "Valor de B: " << B; B = 20; FUNC1(); cout << "Valor de B: " << B; B = 30; FUNC2(); cout << "Valor de B: " << B; }
Qual será a saída para o seguinte trecho de código?
Valor de B: 10 Valor de B dentro da função FUNC1: -100 Valor de B: 20 Valor de B dentro da função FUNC2: -200 Valor de B: 30
Valor de B: 10 Valor de B dentro da função FUNC1: -200 Valor de B: 20 Valor de B dentro da função FUNC2: -200 Valor de B: 30
Valor de B: 10 Valor de B dentro da função FUNC1: -100 Valor de B: 20 Valor de B dentro da função FUNC2: -400 Valor de B: 30
Valor de B: 10 Valor de B dentro da função FUNC1: -100 Valor de B: 20 Valor de B dentro da função FUNC2: -200 Valor de B: 30
Valor de B: 10 Valor de B dentro da função FUNC1: -100 Valor de B: 10 Valor de B dentro da função FUNC2: -200 Valor de B: 30

Considere a função a seguir e a chamada da mesma efetuada no programa principal abaixo. Indique a opção que contem o que será impresso.
int executar (int x, int &y) { x = y * 2; y = ++x; return x + y; } int main () { int a=2, b=2, c=2; c = executar (a, b); cout << a << ", " << b << ", " << c; }
4, 5, 9
3, 2, 8
2, 5, 10
3, 5, 8
2, 2, 9

Nas linguagens C e C++, ao se declarar qualquer função, a especificação de tipo de dados que antecede o nome desta função define
Qual é a definição correta?
o tipo das variáveis que serão utilizadas dentro da função.
o tipo dos dados dos parâmetros que são passados à função quando da sua chamada.
o protótipo da função.
o tipo do dado do valor retornado da função para quem a chamou.
o escopo das variáveis do programa.

Diga, para o trecho do programa abaixo, qual a opção que representa a saída em tela.
Qual é a saída do programa?
Valores: 13 10
Valores: 10 13
Valores: 13 13

Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Questões resolvidas

Para organizar as fotos de minha família com os ancestrais de várias gerações, minha filha usou uma estrutura de dados que é .....
Assinale a opção certa.
pilha
fila
árvore
lista
grafo

As estruturas de dados podem ser caracterizadas como sendo uma forma organizada de armazenar dados ou informações na memória, de modo a otimizar o acesso a estes. Muitas vezes existem algoritmos de manipulação de dados associados a estas estruturas.
Verifique as seguintes sentenças: I-Filas são estruturas que recuperam os dados na ordem direta em que estes foram armazenados. II-As Pilhas são estruturas que recuperam os dados na ordem reversa em que estes foram armazenados. III-As Pilhas são estruturas que recuperam os dados na ordem direta em que estes foram armazenados. IV-As Filas são estruturas que recuperam os dados na ordem reversa em que estes foram armazenados. Marque a alternativa CORRETA:
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.
As alternativas II e IV estão corretas.
As alternativas I e II estão corretas.
Todas as alternativas estão corretas.
As alternativas I e III estão corretas.
As alternativas III e IV estão corretas.

Preciso fazer uma relação de tudo o que levar em minha viagem de mochila pela Europa. A estrutura de dados mais adequada para armazenar tudo que preciso levar é ...
árvore
grafo
fila
lista
pilha

Qual estrutura de dados é mais adequada para armazenar a estrutura do diretório do sistema de arquivos de um sistema operacional?
Fila
Pilha
Grafo
Lista
Árvore

Os irmãos Silva irão viajar por vários países da Europa e por isso, traçaram no mapa o percurso que farão, de cidade a cidade.
Qual a estrutura de dados mais adequada para modelar este problema?
Grafo
Fila
Árvore
Pilha
Lista

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 Encadeada
Fila Sequencial
Pilha Sequencial
Lista Sequencial
Pilha Encadeada

Observe o trecho do programa em C++ abaixo e, após, entrar com os valores sugeridos para sua execução assinale a alternativa que representa a resposta final. cin >> a; cin >> b; cin >> c; cin >> d; cout << a; cout << b; cout << c; cout << d; cout << d; cout << c; cout << b; cout << a; Após a impressão dos valores pela ordem teremos:
uma fila e uma pilha.
uma pilha e um grafo.
duas filas.
duas pilhas.
uma pilha e uma fila.

A forma correta para imprimir o valor do último elemento de um vetor v com n posições é:
cin >> v[-1];
cout << v[n-1];
cout << v[n+1];
cout << v[n];
cout << v[ultimo];

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.

É um exemplo de TAD Não Linear:


Grafos
Pilhas
Filas
Filas de Prioridade
Listas

Assinale a opção CORRETA. O protótipo da função que permitirá calcular o volume de um paralelepípedo com medidas a, b e c de acordo com o trecho da chamada : cout << "Volume = " << volume(a,b,c);
float volume (float, float);
float volume (float ; float ; float);
void volume (float, float, float &);
float volume (float, float, float);
void volume (float , float);

Considere os trechos abaixo: int valor = 100; void eureka (int &z) { int temp = 25; z--; temp = temp - 10; valor = valor - temp; cout << "Auxiliar = " << temp << endl; } int main() { int R = 1000; eureka(R); cout << "Result = " << R << " Valor = " << valor << endl; } Assinale a opção correta.
Será impresso Auxiliar = 15 Result = 999 Valor = 85 sendo que z é um parâmetro passado por referência
Será impresso Auxiliar = 15 Result = 1000 Valor = 100 sendo que z é um parâmetro passado por referência
Será impresso Auxiliar = 15 Result = 999 Valor = 85 sendo que z é um parâmetro passado por valor
Será impresso Auxiliar = 15 Result = 1000 Valor = 85 sendo que z é um parâmetro passado por valor

A declaração de variáveis na programação é o ato de reservar um espaço na memória para poder armazenar valores de um determinado tipo. Essas variáveis podem ser classificadas como variáveis locais e globais. Sendo assim, qual das situações abaixo representa melhor o conceito das variáveis globais.
Em uma função 'resul' tem-se uma variável ali declarada por 'T' que recebe o valor inteiro 5. Ao tentar chamar esta variável em outra função é mencionado um warning.
Em duas funções diferentes temos duas variáveis também diferentes com o mesmo nome apresentando o mesmo valor.
Se dentro de uma função 'mostra' declararmos uma variável 'R' com um determinado valor poderemos imprimir esta variável em qualquer outra função do programa mostrando o valor atribuído na função 'mostra'.
Ao modificar o valor da variável 'X' na função 'modifica' seu valor modificado poderá ser apresentado em qualquer outra função do programa.
Se modificarmos o valor da variável 'Y' na função 'soma', e depois imprimirmos na tela esta variável em outra função, onde também está declarada a variável 'Y', será acusado um erro de compilação.

Ao definirmos uma função, podemos afirmar: I Toda função tem parâmetros II Quando nada retorna, o tipo é void III Quando todos os parâmetros são do mesmo tipo, é suficiente usar o tipo uma vez e separar os nomes dos parâmetros por vírgulas IV Na passagem por valor, o endereço da variável da função chamadora é passado para a função chamada Após uma análise das afirmativas acima, escolha a opção correta.
Somente I e II estão corretas
Somente II III e IV estão corretas
Somente II e IV estão corretas
Somente II e III estão corretas
Somente II está correta

Qual será a saída para o seguinte trecho de código? void FUNC1() { int B = -100; cout << "Valor de B dentro da função FUNC1: " << B; } void FUNC2() { int B = -200; cout << "Valor de B dentro da função FUNC2: " << B; } int main() { int B = 10; cout << "Valor de B: " << B; B = 20; FUNC1(); cout << "Valor de B: " << B; B = 30; FUNC2(); cout << "Valor de B: " << B; }
Qual será a saída para o seguinte trecho de código?
Valor de B: 10 Valor de B dentro da função FUNC1: -100 Valor de B: 20 Valor de B dentro da função FUNC2: -200 Valor de B: 30
Valor de B: 10 Valor de B dentro da função FUNC1: -200 Valor de B: 20 Valor de B dentro da função FUNC2: -200 Valor de B: 30
Valor de B: 10 Valor de B dentro da função FUNC1: -100 Valor de B: 20 Valor de B dentro da função FUNC2: -400 Valor de B: 30
Valor de B: 10 Valor de B dentro da função FUNC1: -100 Valor de B: 20 Valor de B dentro da função FUNC2: -200 Valor de B: 30
Valor de B: 10 Valor de B dentro da função FUNC1: -100 Valor de B: 10 Valor de B dentro da função FUNC2: -200 Valor de B: 30

Considere a função a seguir e a chamada da mesma efetuada no programa principal abaixo. Indique a opção que contem o que será impresso.
int executar (int x, int &y) { x = y * 2; y = ++x; return x + y; } int main () { int a=2, b=2, c=2; c = executar (a, b); cout << a << ", " << b << ", " << c; }
4, 5, 9
3, 2, 8
2, 5, 10
3, 5, 8
2, 2, 9

Nas linguagens C e C++, ao se declarar qualquer função, a especificação de tipo de dados que antecede o nome desta função define
Qual é a definição correta?
o tipo das variáveis que serão utilizadas dentro da função.
o tipo dos dados dos parâmetros que são passados à função quando da sua chamada.
o protótipo da função.
o tipo do dado do valor retornado da função para quem a chamou.
o escopo das variáveis do programa.

Diga, para o trecho do programa abaixo, qual a opção que representa a saída em tela.
Qual é a saída do programa?
Valores: 13 10
Valores: 10 13
Valores: 13 13

Prévia do material em texto

1a Questão 
 
Para organizar as fotos de minha família com os ancestrais de várias gerações, minha filha usou uma 
estrutura de dados que é ..... Assinale a opção certa. 
 
 
fila 
 
grafo 
 
pilha 
 
lista 
 
árvore 
Respondido em 22/04/2020 17:51:08 
 
 
Explicação: 
Conforme gabarito e aula 1. 
 
 
 
 
 2a Questão 
 
Estão entre algumas das possíveis formas de se estruturar dados: 
 
 
Grafos, lista ordenada, vetores. 
 
Lista encadeada, vetores, algoritmos. 
 
Grafos, lista ordenada, algoritmos. 
 
Algoritmos, lista ordenada, vetores. 
 
Grafos, algoritmos, fila. 
Respondido em 22/04/2020 17:51:35 
 
 
Explicação: 
FAlso. Algoritmos não são estrutura de 
dados 
Grafos, algoritmos, fila. 
. 
FAlso. Algoritmos não são estrutura de 
dados. 
Grafos, lista ordenada, 
algoritmos. 
 
Correto. Grafos, lista ordenada, vetores. 
 
FAlso. Algoritmos não são estrutura de 
dados. 
Algoritmos, lista ordenada, 
vetores. 
 
 
FAlso. Algoritmos não são estrutura de dados. 
Lista encadeada, vetores, 
algoritmos. 
 
 
Gabarito 
Coment. 
 
 
 
 
 3a Questão 
 
As estruturas de dados podem ser caracterizadas como sendo uma forma organizada 
de armazenar dados ou informações na memória, de modo a otimizar o acesso a 
estes. Muitas vezes existem algoritmos de manipulação de dados associados a estas 
estruturas. 
Verifique as seguintes sentenças: 
I-Filas são estruturas que recuperam os dados na ordem direta em que estes foram 
armazenados. 
II-As Pilhas são estruturas que recuperam os dados na ordem reversa em que estes 
foram armazenados. 
III-As Pilhas são estruturas que recuperam os dados na ordem direta em que estes 
foram armazenados. 
IV-As Filas são estruturas que recuperam os dados na ordem reversa em que estes 
foram armazenados. 
Marque a alternativa CORRETA: 
 
 
As alternativas I e II estão corretas 
 
As alternativas III e IV estão corretas. 
 
As alternativas II e IV estão corretas. 
 
As alternativas I e III estão corretas. 
 
Todas as alternativas estão corretas. 
Respondido em 22/04/2020 17:53:19 
 
 
 
 
 4a Questão 
 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3747520058&cod_hist_prova=187933271&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3747520058&cod_hist_prova=187933271&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3747520058&cod_hist_prova=187933271&pag_voltar=otacka
 
Preciso fazer uma relação de tudo o que levar em minha viagem de mochila pela Europa. A estrutura de 
dados mais adequada para armazenar tudo que preciso levar é ... 
 
 
grafo 
 
árvore 
 
lista 
 
pilha 
 
fila 
Respondido em 22/04/2020 17:53:37 
 
 
Explicação: 
Conforme gabarito e aula 1. 
 
 
 
 
 5a Questão 
 
Podemos dizer que estrutura de dados é: 
 
 
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. 
 
O que permite o armazenamento e a recuperação de dados independentemente 
de seu conteúdo. 
 
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. 
Respondido em 22/04/2020 17:54:15 
 
 
Gabarito 
Coment. 
 
 
 
 
 6a Questão 
 
Qual estrutura de dados é mais adequada para armazenar a estrutura do diretório do 
sistema de arquivos de um sistema operacional? 
 
 
Fila 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3747520058&cod_hist_prova=187933271&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3747520058&cod_hist_prova=187933271&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3747520058&cod_hist_prova=187933271&pag_voltar=otacka
 
Lista 
 
Árvore 
 
Grafo 
 
Pilha 
Respondido em 22/04/2020 17:55:04 
 
 
Explicação: 
A estrutura de diretórios mostra hierarquia e um relacionamento não linear. Por isso, 
a resposta certa é árvore. 
 
Lista, pilha e fila são estruturas de dados linear. 
 
Grafo é não linear, mas não é hierárquica. 
 
 
 
 
 7a Questão 
 
 Os irmãos Silva irão viajar por vários países da Europa e por isso, traçaram no mapa o percurso 
que farão, de cidade a cidade. Qual a estrutura de dados mais adequada para modelar este 
problema ? 
 
 
 Pilha 
 
Grafo 
 
Fila 
 
 Árvore 
 
 Lista 
Respondido em 22/04/2020 17:55:38 
 
 
 
 
 8a Questão 
 
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 Encadeada 
 
Fila Sequencial 
 
Pilha Sequencial 
 
Pilha Encadeada 
 
Lista Sequencial 
Respondido em 22/04/2020 17:56:43 
 
 
 
 1a Questão 
 
Observe o trecho do programa em C++ abaixo e, após, entrar com os valores 
sugeridos para sua execução assinale a alternativa que representa a resposta final. 
cin >> a; 
cin >> b; 
cin >> c; 
cin >> d; 
 
cout << a; 
cout << b; 
cout << c; 
cout << d; 
 
cout << d; 
cout << c; 
cout << b; 
cout << a; 
 
 
Após a impressão dos valores pela ordem teremos uma fila e uma pilha. 
 
Após a impressão dos valores pela ordem teremos uma fila e um grafo. 
 
Após a impressão dos valores pela ordem teremos duas filas. 
 
Após a impressão dos valores pela ordem teremos duas pilhas. 
 
Após a impressão dos valores pela ordem teremos uma pilha e uma fila. 
Respondido em 22/04/2020 17:58:25 
 
 
 
 
 2a Questão 
 
A forma correta para imprimir o valor do último elemento de um vetor v com n 
posições é: 
 
 
cin >> v[-1]; 
 
cout << v[n-1]; 
 
cout << v[ultimo]; 
 
cout << v[n]; 
 
cout << v[n+1]; 
Respondido em 22/04/2020 17:59:11 
 
 
 
 
 3a Questão 
 
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 
 
I, III, IV e VI são afirmativas verdadeiras 
 
I, II e V são afirmativas verdadeiras 
 
II, IV, V e VI são afirmativas verdadeiras 
Respondido em 22/04/2020 18:00:35 
 
 
Gabarito 
Coment. 
 
 
 
 
 4a Questão 
 
Preciso fazer uma relação de tudo o que levar em minha viagem de mochila pela Europa. A estrutura de 
dados mais adequada para armazenar tudo que preciso levar é ... 
 
 
fila 
 
lista 
 
pilha 
 
grafo 
 
árvore 
Respondido em 22/04/2020 18:00:50 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3747549780&cod_hist_prova=187934828&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3747549780&cod_hist_prova=187934828&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3747549780&cod_hist_prova=187934828&pag_voltar=otackaExplicação: 
Conforme gabarito e aula 1. 
 
 
 
 
 5a Questão 
 
Estão entre algumas das possíveis formas de se estruturar dados: 
 
 
Lista encadeada, vetores, algoritmos. 
 
Grafos, algoritmos, fila. 
 
Grafos, lista ordenada, algoritmos. 
 
Grafos, lista ordenada, vetores. 
 
Algoritmos, lista ordenada, vetores. 
Respondido em 22/04/2020 18:01:21 
 
 
Explicação: 
FAlso. Algoritmos não são estrutura de 
dados 
Grafos, algoritmos, fila. 
. 
FAlso. Algoritmos não são estrutura de 
dados. 
Grafos, lista ordenada, 
algoritmos. 
 
Correto. Grafos, lista ordenada, vetores. 
 
FAlso. Algoritmos não são estrutura de 
dados. 
Algoritmos, lista ordenada, 
vetores. 
 
 
FAlso. Algoritmos não são estrutura de dados. 
Lista encadeada, vetores, 
algoritmos. 
 
 
Gabarito 
Coment. 
 
 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3747549780&cod_hist_prova=187934828&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3747549780&cod_hist_prova=187934828&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3747549780&cod_hist_prova=187934828&pag_voltar=otacka
 
 
 6a Questão 
 
Qual estrutura de dados é mais adequada para armazenar a estrutura do diretório do 
sistema de arquivos de um sistema operacional? 
 
 
Pilha 
 
Árvore 
 
Lista 
 
Grafo 
 
Fila 
Respondido em 22/04/2020 18:01:42 
 
 
Explicação: 
A estrutura de diretórios mostra hierarquia e um relacionamento não linear. Por isso, 
a resposta certa é árvore. 
 
Lista, pilha e fila são estruturas de dados linear. 
 
Grafo é não linear, mas não é hierárquica. 
 
 
 
 
 7a Questão 
 
 Os irmãos Silva irão viajar por vários países da Europa e por isso, traçaram no mapa o percurso 
que farão, de cidade a cidade. Qual a estrutura de dados mais adequada para modelar este 
problema ? 
 
 
Grafo 
 
 Pilha 
 
 Árvore 
 
Fila 
 
 Lista 
Respondido em 22/04/2020 18:01:56 
 
 
 
 
 8a Questão 
 
As estruturas de dados podem ser caracterizadas como sendo uma forma organizada 
de armazenar dados ou informações na memória, de modo a otimizar o acesso a estes. 
Muitas vezes existem algoritmos de manipulação de dados associados a estas 
estruturas. 
Verifique as seguintes sentenças: 
I-Filas são estruturas que recuperam os dados na ordem direta em que estes foram 
armazenados. 
II-As Pilhas são estruturas que recuperam os dados na ordem reversa em que estes 
foram armazenados. 
III-As Pilhas são estruturas que recuperam os dados na ordem direta em que estes 
foram armazenados. 
IV-As Filas são estruturas que recuperam os dados na ordem reversa em que estes 
foram armazenados. 
Marque a alternativa CORRETA: 
 
 
Todas as alternativas estão corretas. 
 
As alternativas I e III estão corretas. 
 
As alternativas I e II estão corretas 
 
As alternativas III e IV estão corretas. 
 
As alternativas II e IV estão corretas. 
 
 
 
 1a Questão 
 
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 
 
Pilha Sequencial 
 
Pilha Encadeada 
 
Fila Sequencial 
 
Lista Encadeada 
Respondido em 19/05/2020 21:46:45 
 
 
 
 
 2a Questão 
 
Observe o trecho do programa em C++ abaixo e, após, entrar com os valores 
sugeridos para sua execução assinale a alternativa que representa a resposta final. 
cin >> a; 
cin >> b; 
cin >> c; 
cin >> d; 
 
cout << a; 
cout << b; 
cout << c; 
cout << d; 
 
cout << d; 
cout << c; 
cout << b; 
cout << a; 
 
 
Após a impressão dos valores pela ordem teremos duas filas. 
 
Após a impressão dos valores pela ordem teremos uma pilha e uma fila. 
 
Após a impressão dos valores pela ordem teremos uma fila e um grafo. 
 
Após a impressão dos valores pela ordem teremos uma fila e uma pilha. 
 
Após a impressão dos valores pela ordem teremos duas pilhas. 
Respondido em 19/05/2020 21:49:30 
 
 
 
 
 3a Questão 
 
 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. 
 
 
Lista 
 
 Pilha 
 
Árvore 
 
Grafo 
 
 Fila 
Respondido em 19/05/2020 21:46:54 
 
 
 
 
 4a Questão 
 
As estruturas de dados podem ser caracterizadas como sendo uma forma 
organizada de armazenar dados ou informações na memória, de modo a 
otimizar o acesso a estes. Muitas vezes existem algoritmos de manipulação 
dados associados a estas estruturas. Verifique as seguintes sentenças: 
I-Filas são estruturas que recuperam os dados na ordem direta em que estes 
foram armazenados. 
II-As Pilhas são estruturas que recuperam os dados na ordem reversa em 
que estes foram armazenados. 
III-As Pilhas são estruturas que recuperam os dados na ordem direta em 
que estes foram armazenados. 
IV-As Filas são estruturas que recuperam os dados na ordem reversa em 
que estes foram armazenados. 
Marque a alternativa CORRETA: 
 
 
As alternativas I e III estão corretas. 
 
As alternativas II e IV estão corretas. 
 
Todas as alternativas estão corretas. 
 
As alternativas I e II estão corretas 
 
As alternativas III e IV estão corretas. 
Respondido em 19/05/2020 21:47:00 
 
 
Gabarito 
Coment. 
 
 
 
 
 5a Questão 
 
A forma correta para imprimir o valor do último elemento de um vetor v com n 
posições é: 
 
 
cin >> v[-1]; 
 
cout << v[n]; 
 
cout << v[n+1]; 
 
cout << v[n-1]; 
 
cout << v[ultimo]; 
Respondido em 19/05/2020 21:47:08 
 
 
 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881674470&cod_hist_prova=194385641&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881674470&cod_hist_prova=194385641&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881674470&cod_hist_prova=194385641&pag_voltar=otacka
 
 6a Questão 
 
Preciso fazer uma relação de tudo o que levar em minha viagem de mochila pela Europa. A estrutura de 
dados mais adequada para armazenar tudo que preciso levar é ... 
 
 
lista 
 
árvore 
 
pilha 
 
fila 
 
grafo 
Respondido em 19/05/2020 21:47:09 
 
 
Explicação: 
Conforme gabarito e aula 1. 
 
 
 
 
 7a Questão 
 
Estão entre algumas das possíveis formas de se estruturar dados: 
 
 
Grafos, lista ordenada, algoritmos. 
 
Lista encadeada, vetores, algoritmos. 
 
Grafos, algoritmos, fila. 
 
Algoritmos, lista ordenada, vetores. 
 
Grafos, lista ordenada, vetores. 
Respondido em 19/05/2020 21:46:59 
 
 
Explicação: 
FAlso. Algoritmos não são estrutura de 
dados 
Grafos, algoritmos, fila. 
. 
FAlso. Algoritmos não são estrutura de 
dados. 
Grafos, lista ordenada, 
algoritmos. 
 
Correto. Grafos, lista ordenada, vetores. 
 
FAlso. Algoritmos não são estrutura de 
dados. 
Algoritmos, lista ordenada, 
vetores. 
 
 
FAlso. Algoritmos não são estrutura de dados. 
Lista encadeada, vetores, 
algoritmos. 
 
 
Gabarito 
Coment. 
 
 
 
 
 8a Questão 
 
É um exemplo de TAD Não Linear: 
 
 
Grafos 
 
Listas 
 
Filas de Prioridade 
 
Pilhas 
 
Filas 
Respondido em 19/05/2020 21:47:04 
 
 
Explicação: Um grafo é um tipo de dados abstrato não linear 
1a QuestãoDiga, para o trecho do programa abaixo, qual a opção que representa a saída em 
tela. Considere que o programa será compilado sem erros e irá executar também 
sem problemas . 
void troca (int x, int y){ 
 int tmp; 
 tmp = y; 
 y = x; 
 x = tmp; 
} 
int main( ) { 
 int a = 13, b = 10; 
 troca( a, b ); 
 cout<<"Valores: "<< a<<"\t"<< b<<< endl; 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881674470&cod_hist_prova=194385641&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881674470&cod_hist_prova=194385641&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881674470&cod_hist_prova=194385641&pag_voltar=otacka
 system("pause"); 
} 
 
 
Valores: 10 13 
 
Valores: 13 13 
 
Valores: 31 01 
 
Valores: 13 10 
 
Valores: 10 10 
Respondido em 22/04/2020 18:08:10 
 
 
Explicação: 
Acompanhando passo a passo a execução do trecho dado temos : 
void troca (int x, int y){ 
 int tmp; 
 tmp = y; 
 y = x; 
 x = tmp; 
} 
int main( ) { 
 int a = 13, b = 10; 
 troca( a, b ); 
 cout<<"Valores: "<< a<<"\t"<< b<<< endl; 
 system("pause"); 
} 
A execução começa pela main e os valores 13 e 10 são passados para a função na 
chamada em troca(a,b); 
Ao iniciar a execução em troca, temos que x recebe 13 e y recebe 10. Mas x e y são 
parâmetros passados por valor então, nada ocorrerá com a e b na main. ASsim, após 
a função terminar sua execução e voltarmos para a main temos a seguinte impressão 
na tela : 
Valores : 13 10 
 
 
 
 
 2a Questão 
 
Considere as seguintes afirmativas : 
I) Os vetores em C++, quando passados como parâmetros de funções, são 
obrigatoriamente passados "por valor" e não "por referência". 
II) Variáveis globais são um recurso adequado para troca de informações entre 
funções distintas. 
III) Caso uma função necessite retornar mais de um valor ao programa que a 
chamou, deve fazê-lo usando parâmetros passados "por valor". 
As afirmativas corretas são: 
 
 
Apenas III 
 
Apenas I e II 
 
Apenas I 
 
Apenas II 
 
Nenhuma está correta 
Respondido em 22/04/2020 18:09:18 
 
 
Explicação: 
Analisando cada afirmativa ... 
I . Falso. Em C++ os vetores passados como parâmetros são sempre passados por 
referência. 
II. FAlso. Variáveis globais são uma péssima forma de usar recursos, 
comprometendo principalmente a manutenção do programa. 
III. FAlso. A função poderá retornar explicitamente um valor com return, mas terá 
que passar o outro parâmetro por referência e não por valor. Outra forma, será passar 
todos os parâmetros por referência. 
Portanto, não opção correta. 
 
 
 
 
 3a Questão 
 
 Assinale a opção CORRETA. O protótipo da função que permitirá calcular o 
volume de um paralelepípedo com medidas a, b e c de acordo com o trecho 
da chamada : cout << "Volume = " << volume(a,b,c); 
 
 
float volume (float, float); 
 
float volume (float ; float ; float); 
 
void volume (float , float); 
 
void volume (float, float, float &); 
 
float volume (float, float, float); 
Respondido em 22/04/2020 18:10:24 
 
 
Explicação: 
Resposta única. 
Pela chamada da função 
cout << "Volume = " << volume(a,b,c); 
temos que a função retorna um valor, que pelo enunciado, vemos que é do tipo float. 
Há ainda os valores de a, b e c que são medidas de uma figura geométrica. Logo, a, b 
e c são do tipo float. 
Como protótipo é uma declaração temos : 
tipo de retorno da função seguido do seu nome seguido de parênteses e dentro dos 
parênteses, temos os tipos das variáveis que estavam na chamada da função. 
Logo : float volume(float, float, float); 
Note a vírgula para separar os tipos e o ponto e vírgula ao final. 
 
 
 
 
 
 4a Questão 
 
Considere os trechos abaixo: 
int valor = 100; 
void eureka (int &z) { 
 int temp = 25; 
 z--; 
 temp = temp - 10; 
 valor = valor - temp; 
 cout << "Auxiliar = " << temp << endl; 
} 
int main() { 
 int R = 1000; 
 eureka(R); 
 cout << "Result = " << R << " Valor = " << valor << endl; 
} 
Assinale a opção correta. 
 
 
Será impresso 
Auxiliar = 15 
Result = 999 Valor = 85 
sendo que z é um parâmetro passado por referência 
 
 
 
Será impresso 
Auxiliar = 15 
Result = 1000 Valor = 100 
sendo que z é um parâmetro passado por referência 
 
 
 
Será impresso 
Auxiliar = 15 
Result = 999 Valor = 85 
sendo que z é um parâmetro passado por valor 
 
 
 
Será impresso 
Auxiliar = 15 
Result = 1000 Valor = 85 
sendo que z é um parâmetro passado por referência 
 
Será impresso 
Auxiliar = 15 
Result = 1000 Valor = 85 
sendo que z é um parâmetro passado por valor 
 
 
Respondido em 22/04/2020 18:11:03 
 
 
Explicação: 
Questão objetiva. Só é possível ser marcada a opção indicada no gabarito. 
Vejamos a análise passo a passo do trecho de código.... 
int valor = 100; 
void eureka (int &z) { 
 int temp = 25; 
 z--; 
 temp = temp - 10; 
 valor = valor - temp; 
 cout << "Auxiliar = " << temp << endl; 
} 
int main() { 
 int R = 1000; 
 eureka(R); 
 cout << "Result = " << R << " Valor = " << valor << endl; 
} 
Passo a passo .... 
Temos que valor recebeu 100 e valor é uma variável global. 
Começando a execução pela main, temos que eureka é chamada e o valor 1000 é 
passado. 
Iniciando a execução de eureka temos que : 
 temp (local à eureka) recebe o valor 25, depois o valor 1000 passado é 
decrementado para 999, temp recebe 15, valor recebe 100-15, que dá 85. Daí, o valor 
de temp é impresso, sendo mostrado na tela : Auxiliar = 15. DAí, a função 
termina e volta-se para a main. Lá na main, após a chamada da eureka, temos a 
seguinte impressão : 
 Result = 999 Valor = 85 
Note que para R valer 999 só foi possível porque z é um parâmetro passado por 
referência. 
 
 
 
 
 5a Questão 
 
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 dentro de uma função "mostra" declararmos uma variável 'R' com um 
determinado valor poderemos imprimir esta variável em qualquer outra 
função do programa mostrando o valor atribuído na função "mostra". 
 
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 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. 
 
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. 
 
Em duas funções diferentes temos duas variáveis também diferentes com o 
mesmo nome apresentando o mesmo valor. 
Respondido em 19/05/2020 21:31:08 
 
 
Explicação: 
Uma variável é classificada com Global quando for declarada fora de todas as funções, 
significando que poderá ser alterada em qualquer uma delas. 
A resposta correta é : 
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 
Coment. 
 
 
 
 
 6a Questão 
 
Ao definirmos uma função, podemos afirmar: 
I Toda função tem parâmetros 
II Quando nada retorna, o tipo é void 
III Quando todos os parâmetros são do mesmo tipo, é suficiente usar o tipo uma 
vez e separar os nomes dos parâmetros por vírgulas 
IV Na passagem por valor, o endereço da variável da função chamadora é passado 
para a funçãochamada 
Após uma análise das afirmativas acima, escolha a opção correta. 
 
 
Somente II III e IV estão corretas 
 
Somente II e IV estão corretas 
 
Somente II e III estão corretas 
 
Somente II está correta 
 
Somente I e II estão corretas 
Respondido em 19/05/2020 21:30:26 
 
 
Gabarito 
Coment. 
 
 
 
 
 7a Questão 
 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3747580768&cod_hist_prova=187936316&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3747580768&cod_hist_prova=187936316&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3747580768&cod_hist_prova=187936316&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3747580768&cod_hist_prova=187936316&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3747580768&cod_hist_prova=187936316&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3747580768&cod_hist_prova=187936316&pag_voltar=otacka
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. 
 
A definição da função deverá ser escrita, obrigatoriamente, após o programa 
principal. 
 
O programa não funcionará de forma alguma. 
 
É preciso definir a função antes do programa principal. 
 
A chamada da função poderá ser feita em qualquer hipótese. 
Respondido em 22/04/2020 18:12:50 
 
 
Gabarito 
Coment. 
 
 
 
 
 8a Questão 
 
Qual será a saída para o seguinte trecho de código? 
 void FUNC1() 
{ 
int B = -100; 
cout << "Valor de B dentro da função FUNC1: " << B; 
} 
void FUNC2() { 
int B = -200; 
cout << "Valor de B dentro da função FUNC2: " << B; 
} 
int main() { 
int B = 10; 
cout << "Valor de B: " << B; 
B = 20; 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3747580768&cod_hist_prova=187936316&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3747580768&cod_hist_prova=187936316&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3747580768&cod_hist_prova=187936316&pag_voltar=otacka
FUNC1(); 
cout << "Valor de B: " << B; 
B = 30; 
FUNC2(); 
cout << "Valor de B: " << B; 
} 
 
 
Valor de B: 10 Valor de B dentro da função FUNC1: -200 Valor de B: 20 
Valor de B dentro da função FUNC2: -200 Valor de B: 30 
 
Valor de B: 10 Valor de B dentro da função FUNC1: -100 Valor de B: 10 
Valor de B dentro da função FUNC2: -200 Valor de B: 30 
 
Valor de B: 10 Valor de B dentro da função FUNC1: -100 Valor de B: 20 
Valor de B dentro da função FUNC2: -400 Valor de B: 30 
 
Valor de B: 10 Valor de B dentro da função FUNC1: -100 Valor de B: 20 
Valor de B dentro da função FUNC2: -200 Valor de B: 30 
 
Valor de B: 10 Valor de B dentro da função FUNC1: -100 Valor de B: 20 
Valor de B dentro da função FUNC2: -200 Valor de B: 20 
Respondido em 22/04/2020 18:15:52 
 
 
Explicação: 
A execução começa pela main. Na main, B recebe 10. E daí é impresso : Valor de 
B : 10 
DEpois, B muda e recebe 20. 
Em seguida, é chamada a função FUNC1. Dentro desta função, existe um outro B 
que recebe -100. Então, é impresso : 
 Valor de B dentro da função FUNC1: -100 
A função termina e voltamos para a main, onde existe um outro cout que imprime o 
valor de B, que na main vale 20. Então, será impresso na tela : 
 Valor de B : 20 
Em seguida, ainda na main, B recebe 30 e logo depois, FUNC2 é 
chamada. Executando FUNC2 temos que um B, local à função, recebe -200 e logo 
em seguida é impresso : Valor de B dentro da função FUNC2 : -200 
Terminando a execução de FUNC2, voltamos para a main onde é impresso o valor 
do B (local à main) : Valor de B : 30 
Logo, a opção correta é a que diz : 
 Valor de B : 10 
 Valor de B dentro da função FUNC1: -100 
 Valor de B : 20 
 Valor de B dentro da função FUNC2 : -200 
 Valor de B : 30 
 
 
 
1a Questão 
 
Considere a função a seguir e a chamada da mesma efetuada no programa principal 
abaixo. Indique a opção que contem o que será impresso. 
int executar (int x, int &y) { 
 x = y * 2; 
 y = ++x; 
 return x + y; 
} 
int main () { 
int a=2, b=2, c=2; 
c = executar (a, b); 
cout << a << ", " << b << ", " << c; 
} 
 
 
3, 2, 8 
 
3, 5, 8 
 
2, 5, 10 
 
4, 5, 9 
 
2, 2, 9 
Respondido em 19/05/2020 21:31:50 
 
 
Explicação: 
Fazendo um teste de mesa, temos o seguinte : 
A execução começa pela main. 
As variáveis a, b e c são iniciadas com 2. 
Chama-se a função executar e são passados os valores de a e b, ou seja, 2 e 2. 
Ao iniciar a execução da função executar temos que x é passado por valor e y por referência. 
Iniciando a função temos : 
Em x = y * 2; Daí : x recebe 2 * 2, que dá 4 
Em y = ++x; Daí : x é incrementado para 5 e depois y recebe 5. 
Então, a soma de x + y é retornado. Ou seja, 10 é retornado. 
Mas como y é passado por referência, a variável b na chamada da função foi alterada para 
5. Nada, no entanto, ocorreu com a na chamada da função, pois x foi passado por valor. 
Ao voltar para main, será impresso 2, 5, 10 
Portanto, qualquer outra opção é totalmente inviável. 
 
 
 
 
 
 
 2a Questão 
 
Considere o trecho de um programa escrito em C++. 
int func1 (int vtx[], int tam) { 
 int soma=0; 
 for (int i=0 ; i < tam; i++) { 
 if (i % 2 !=0) 
 soma += vtx[i]; 
 } 
 return soma; 
} 
int main() { 
 int vt[5] = {10,20,30,40,50}; 
 cout << func1 (vt,5); 
} 
Marque a opção correta que mostra o que é impresso na tela. 
 
 
60 
 
30 
 
50 
 
20 
 
40 
Respondido em 19/05/2020 21:31:40 
 
 
Explicação: 
int func1 (int vtx[], int tam) { 
 int soma=0; //inicializa soma com zero. 
 for (int i=0 ; i < tam; i++) { 
 if (i % 2 !=0) //testa se i é ímpar. Se for, acumula na soma o valor de vtx[i] 
 soma += vtx[i]; 
 } 
 return soma; 
} 
 
Fazendo um teste de mesa parcial ... 
vetor tam soma i 
{10, 20, 30, 40, 50} 5 0 0 
 20 1 
 2 
E continua ... se vê que a função está somando os elementos do vetor que possuem 
índices ímpares. Logo, serão somados 20 e 40, que dará 60. 
A soma 60 é retornada e impressa na main. 
 
 
 
 
 3a Questão 
 
 Assinale a opção CORRETA. O protótipo da função que permitirá calcular o 
volume de um paralelepípedo com medidas a, b e c de acordo com o trecho 
da chamada : cout << "Volume = " << volume(a,b,c); 
 
 
float volume (float, float, float); 
 
float volume (float, float); 
 
void volume (float , float); 
 
void volume (float, float, float &); 
 
float volume (float ; float ; float); 
Respondido em 19/05/2020 21:31:47 
 
 
Explicação: 
Resposta única. 
Pela chamada da função 
cout << "Volume = " << volume(a,b,c); 
temos que a função retorna um valor, que pelo enunciado, vemos que é do tipo 
float. Há ainda os valores de a, b e c que são medidas de uma figura geométrica. 
Logo, a, b e c são do tipo float. 
Como protótipo é uma declaração temos : 
tipo de retorno da função seguido do seu nome seguido de parênteses e dentro 
dos parênteses, temos os tipos das variáveis que estavam na chamada da 
função. 
Logo : float volume(float, float, float); 
Note a vírgula para separar os tipos e o ponto e vírgula ao final. 
 
 
 
 
 
 4a Questão 
 
Nas linguagens C e C++, ao se declarar qualquer função, a especificação de tipo de 
dados que antecede o nome desta função define 
 
 
o escopo das variáveis do programa. 
 
o tipo das variáveis que serão utilizadas dentro da função. 
 
o protótipo da função. 
 
o tipo do dado do valor retornado da função para quem a chamou.o tipo dos dados dos parâmetros que são passados à função quando da sua 
chamada. 
Respondido em 19/05/2020 21:31:27 
 
 
Explicação: 
Por definição, antes do nome da função colocamos o tipo de dados retornado. Por 
exemplo, int, double, char ... Quando a função nada retorna colocamos void. 
 
 
 
 
 5a Questão 
 
O que será mostrado na tela pelo programa abaixo ? 
 
#include < iostream > 
using namespace std; 
 
int a,b; 
 
void dobro(int x){ //x passado por valor 
 x=2*x; 
} 
int triplo(int y){ //y passado por valor 
 return 3*y; 
} 
void altera(int x, int &y) { //x passado por valor e y passado 
por referencia 
 x=x+a; 
 y=x+b; 
} 
 
int main (){ 
 a=2; 
 b=3; 
 dobro(a); 
 b=triplo(b); 
 altera(a,b); 
 cout<< a << " e " << b << endl; 
} 
 
 
 
 
4 e 12 
 
9 e 16 
 
4 e 9 
 
2 e 13 
 
2 e 9 
Respondido em 19/05/2020 21:38:30 
 
 
Explicação: 
Executando o programa, passo a passo, temos : 
Na main, a recebe 2 e b recebe 3. Note que a e b são variáveis globais. 
Daí, ainda na main, a função dobro é chamada. Ao executar dobro, temos que o 
valor 2 é passado e x (local à dobro) recebe 2 * 2, que dá 4. 
Ao terminar a função dobro, volta-se para a main, mas o valor de a passado não 
mudou, continuando 2. 
Após a execução de dobro, a função triplo é chamada na main e é passado o valor 
de b, que é 3. Iniciando a execução da função triplo, temos que y recebe 3 e a 
função retorna 3 * 3, que é 9. Voltando para a main, temos que b recebe o valor 
retornado pela função, que é 9. 
Até este ponto, temos que a vale 2 e b mudou para 9. 
Em seguida, a função altera é chamada e são passados 2 e 9, respectivamente, para 
x e y. Executando a função altera, temos que x recebe 2+2, que dá 4 e y recebe 
4+9, que dá 13. Como x é passado por valor e y por referência, temos que a 
mudará e b mudará (ambas na main). 
Então, voltando para main temos que a vale 2 e que b vale 13. Assim, será 
impresso na tela 
 2 e 13 
 
 
 
 
 6a Questão 
 
#include < iostream > 
 using namespace std; 
void SOMA(float a, int b) { 
 float result = a+b; 
 cout << "A soma de " << a << " com " << b << " é: " << result; 
} 
int main() 
{ 
int a; 
float b; 
a = 10; b = 12.3; 
SOMA(b,a); 
} 
A função SOMA acima possui as seguintes características : 
 
 
Não retorna valor e não possui parâmetros. 
 
Retorna valor. 
 
Retorna valor e possui parâmetros. 
 
Não retorna valor e possui parâmetros. 
 
Retorna valor e não possui parâmetros. 
Respondido em 19/05/2020 21:38:53 
 
 
Explicação: 
A função 
void SOMA(float a, int b) { 
 float result = a+b; 
 cout << "A soma de " << a << " com " << b << " é: " << result; 
} 
tem o tipo de retorno void, o que significa que nenhum valor é retornado. Além 
disso, a função possui 2 parâmetros, que são a e b. 
Logo, a resposta certa é Não retorna valor e possui parâmetros. 
 
 
 
 
 7a Questão 
 
Diga, para o trecho do programa abaixo, qual a opção que representa a saída em 
tela. Considere que o programa será compilado sem erros, e irá executar também 
sem problemas. 
void troca (int x, int *y){ 
 int tmp; 
 tmp = *y; 
 *y = x; 
 x = tmp; 
} 
int main() { 
 int a = 13, b = 10; 
 troca( a, &b ); 
 cout<<"Valores: "<< a<<"\t"<< b<< endl; 
 system("pause"); 
} 
 
 
Valores: 13 10 
 
Valores: 10 13 
 
Valores: 13 13 
 
Valores: 31 01 
 
Valores: 10 10 
Respondido em 19/05/2020 21:39:00 
 
 
Explicação: 
 
A execução começa pela main. São passados o valor de a, que é 13 e o endereço de 
b, que vale 10. Em seguida, é chamada a função troca e são passados o valor de a e 
o endereço de b. 
Executando a função troca, x recebe 13 e *y recebe 10. Mas ocorre a troca, usando 
tmp como auxiliar. Então x recebe 10 e *y recebe 13. Ao terminar a execução da 
função, voltamos para a main e temos a sem mudanças e b com a mudança 
ocorrida na função. Note que x é um parâmetro passado por valor e y é um 
parÂmetro passado por referência. 
Portanto, a ficou 13 e b ficou 13. 
Logo, será impresso : Valores: 13 13 
 
 
 
 
 8a Questão 
 
Considere a seguinte função: void dobro(int x) { x = 2 * x; } Qual valor será impresso 
na tela quando o seguinte programa principal for executado? int main() { int n = 3; n 
= n + 2; dobro(n); cout << n; return 0; } 
 
 
20 
 
0 
 
5 
 
3 
 
10 
Respondido em 19/05/2020 21:39:05 
 
 
Explicação: 
A função não retorna valor, então o valor de "n" não é alterado permanecendo igual a 
5. 
 
1a Questão 
 
Blocos únicos de códigos que realizam diversas tarefas distintas são de difícil 
manutenção. Portanto, utiliza-se a técnica da modularização de programas, a fim de 
facilitar a implementação e a manutenção dos programas. Esta técnica tem como 
principal elemento: 
 
 
Os Vetores 
 
Os Grafos 
 
As Filas 
 
As Estruturas de Dados 
 
As funções 
Respondido em 19/05/2020 21:47:20 
 
 
 
 
 2a Questão 
 
Considere os trechos abaixo: 
int valor = 100; 
void eureka (int &z) { 
 int temp = 25; 
 z--; 
 temp = temp - 10; 
 valor = valor - temp; 
 cout << "Auxiliar = " << temp << endl; 
} 
int main() { 
 int R = 1000; 
 eureka(R); 
 cout << "Result = " << R << " Valor = " << valor << endl; 
} 
Assinale a opção correta. 
 
 
Será impresso 
Auxiliar = 15 
Result = 999 Valor = 85 
sendo que z é um parâmetro passado por valor 
 
 
 
Será impresso 
Auxiliar = 15 
Result = 999 Valor = 85 
sendo que z é um parâmetro passado por referência 
 
 
 
Será impresso 
Auxiliar = 15 
Result = 1000 Valor = 85 
sendo que z é um parâmetro passado por valor 
 
 
 
Será impresso 
Auxiliar = 15 
Result = 1000 Valor = 100 
sendo que z é um parâmetro passado por referência 
 
 
 
Será impresso 
Auxiliar = 15 
Result = 1000 Valor = 85 
sendo que z é um parâmetro passado por referência 
Respondido em 19/05/2020 21:47:27 
 
 
Explicação: 
Questão objetiva. Só é possível ser marcada a opção indicada no gabarito. 
Vejamos a análise passo a passo do trecho de código.... 
int valor = 100; 
void eureka (int &z) { 
 int temp = 25; 
 z--; 
 temp = temp - 10; 
 valor = valor - temp; 
 cout << "Auxiliar = " << temp << endl; 
} 
int main() { 
 int R = 1000; 
 eureka(R); 
 cout << "Result = " << R << " Valor = " << valor << endl; 
} 
Passo a passo .... 
Temos que valor recebeu 100 e valor é uma variável global. 
Começando a execução pela main, temos que eureka é chamada e o valor 1000 é 
passado. 
Iniciando a execução de eureka temos que : 
 temp (local à eureka) recebe o valor 25, depois o valor 1000 passado é 
decrementado para 999, temp recebe 15, valor recebe 100-15, que dá 85. Daí, o 
valor de temp é impresso, sendo mostrado na tela : Auxiliar = 15. DAí, a função 
termina e volta-se para a main. Lá na main, após a chamada da eureka, temos a 
seguinte impressão : 
 Result = 999 Valor = 85 
Note que para R valer 999 só foi possível porque z é um parâmetro passado por 
referência. 
 
 
 
 
 3a Questão 
 
Considere o trecho de um programa escrito em C++ : 
int func1 (int n1, int n2) { 
 int soma=0; 
 for ( ; n1 < n2 ; n1 += 2) { 
 soma += n1; 
 } 
 return soma; 
} 
main() { 
 cout << func1(1.20); 
} 
Marque a opção correta que mostra o que é impresso na tela. 
 
 
104 
 
80 
 
90 
 
100 
 
102 
Respondido em 19/05/2020 21:47:34 
 
 
Explicação: 
int func1 (int n1, int n2) { 
 int soma=0; 
 for ( ; n1 < n2 ; n1 += 2) { 
 soma += n1; 
 } 
 return soma; 
} 
main() { 
 cout << func1(1,20); 
} 
Fazendo passo a passo : 
n1 n2 soma 
1 20 0 
3 1 
5 4 
7 9 
9 16 
11 25 
1336 
15 49 
17 64 
19 81 
21 ... Teste dará falso 100 
Retorna o valor 100 que é impresso na main. 
 
 
 
 
 4a Questão 
 
No programa abaixo em C++, que sequência de valores serão impressos ? int x; x = 
15; if (x > 0) { int x; x = 25; cout << x << endl; } cout << x << endl; 
 
 
15 e 15 
 
25 e 15 
 
0 e 5 
 
15 e 25 
 
25 e 25 
Respondido em 19/05/2020 21:47:58 
 
 
Explicação: 
Analisando passo a passo, temos : 
x é declarado e inicializado com 15. Daí, testa-se a condição do if, que é 
verdadeira. Em seguida, entra-se no bloco do if onde um outro x é declarado, 
recebe 25 e é impresso. Terminado o bloco do if, o x local ao bloco do if não é 
mais enxergado. Então, ao executarmos a última linha do cout, que está fora do if, 
vemos que o valor de x impresso é 15. 
Logo, a resposta correta é 25 e 15 
 
 
 
 
 5a Questão 
 
Sobre funções, é correto afirmar: 
 
 
Não podem ser chamadas dentro de outras funções. 
 
São blocos de instruções que são executados quando são chamadas em 
alguma parte do programa. 
 
Obrigatoriamente devem retornam algum valor. 
 
Não devem conter variáveis locais em seu código. 
 
Obrigatoriamente devem possuir parâmetros. 
Respondido em 19/05/2020 21:47:49 
 
 
Explicação: 
Uma função é um bloco de instruções que pode ser chamada a partir de outra 
função, que pode ter ou não parâmetros, que pode ou não retornar valor, que pode 
ter ou não variáveis locais. 
 
 
 
 
 6a Questão 
 
Para compararmos vetores de char, usaremos a função _____________________ . 
Para copiarmos o conteúdo de um vetor de char nas posições ocupadas por outro 
vetor de char, usaremos a função ______________________ . 
 
 
strcmp(); e strlen() ; 
 
strcat(); e strcpy() ; 
 
strcmp(); e strcat(); 
 
strcmp(); e strcpy(); 
 
strcmp(); e strcmpi (); 
Respondido em 19/05/2020 21:47:55 
 
 
Explicação: 
Nâo há outra possíbilidade de resposta. Em cstring estão declaradas as funções da 
opção correta, que fazem exatamente o que foi mencionado no enunciado. 
Ainda a saber : strcat concatena e strlen conta o número de caracteres 
 
 
 
 
 7a Questão 
 
Considere o trecho de um programa escrito em C++ : 
int func1 (long num) { 
 int n, na=1; 
 while (num / 10 != 0){ 
 na += 1; 
 num /= 10; 
 } 
 return na; 
} 
main() { 
 cout << func1 (132041); 
} 
Marque a opção correta que mostra o que é impresso na tela. 
 
 
6 
 
3 
 
2 
 
1 
 
4 
Respondido em 19/05/2020 21:48:02 
 
 
Explicação: 
Fazendo passo a passo : 
int func1 (long num) { 
 int n, na=1; 
 while (num / 10 != 0){ 
 na += 1; 
 num /= 10; 
 } 
 return na; 
} 
main() { 
 cout << func1 (132041); 
} 
Passos : 
1) Chamada da função passando o valor 132041 
2) Começa a função com num recebendo o valor 132041 
3) na recebe 1 
4) enquanto num/10 é diferente de zero faça ... Vejamos : 132041/10 é diferente 
de zero então 
 na recebe 2 e num recebe 13204 
5) Volta no teste do loop... 13204 /10 é diferente de zero ? Sim. Então, na recebe 3 
e num recebe 1320 
6) Volta no teste do loop... 1320 /10 é diferente de zero ? Sim. Então, na recebe 4 e 
num recebe 132 
7) Volta no teste do loop... 132 /10 é diferente de zero ? Sim. Então, na recebe 5 e 
num recebe 13 
8) Volta no teste do loop... 13 /10 é diferente de zero ? Sim. Então, na recebe 6 e 
num recebe 1 
9) Volta no teste do loop... 1 /10 é diferente de zero ? Não. 
Então, retorna o valor e na que é 6. 
 
 
 
 
 8a Questão 
 
Qual será a saída para o seguinte trecho de código? 
 void FUNC1() 
{ 
int B = -100; 
cout << "Valor de B dentro da função FUNC1: " << B; 
} 
void FUNC2() { 
int B = -200; 
cout << "Valor de B dentro da função FUNC2: " << B; 
} 
int main() { 
int B = 10; 
cout << "Valor de B: " << B; 
B = 20; 
FUNC1(); 
cout << "Valor de B: " << B; 
B = 30; 
FUNC2(); 
cout << "Valor de B: " << B; 
} 
 
 
Valor de B: 10 Valor de B dentro da função FUNC1: -100 Valor de B: 20 
Valor de B dentro da função FUNC2: -200 Valor de B: 20 
 
Valor de B: 10 Valor de B dentro da função FUNC1: -200 Valor de B: 20 
Valor de B dentro da função FUNC2: -200 Valor de B: 30 
 
Valor de B: 10 Valor de B dentro da função FUNC1: -100 Valor de B: 20 
Valor de B dentro da função FUNC2: -400 Valor de B: 30 
 
Valor de B: 10 Valor de B dentro da função FUNC1: -100 Valor de B: 20 
Valor de B dentro da função FUNC2: -200 Valor de B: 30 
 
Valor de B: 10 Valor de B dentro da função FUNC1: -100 Valor de B: 10 
Valor de B dentro da função FUNC2: -200 Valor de B: 30 
Respondido em 19/05/2020 21:48:07 
 
 
Explicação: 
A execução começa pela main. Na main, B recebe 10. E daí é impresso : Valor de 
B : 10 
DEpois, B muda e recebe 20. 
Em seguida, é chamada a função FUNC1. Dentro desta função, existe um outro B 
que recebe -100. Então, é impresso : 
 Valor de B dentro da função FUNC1: -100 
A função termina e voltamos para a main, onde existe um outro cout que imprime o 
valor de B, que na main vale 20. Então, será impresso na tela : 
 Valor de B : 20 
Em seguida, ainda na main, B recebe 30 e logo depois, FUNC2 é 
chamada. Executando FUNC2 temos que um B, local à função, recebe -200 e logo 
em seguida é impresso : Valor de B dentro da função FUNC2 : -200 
Terminando a execução de FUNC2, voltamos para a main onde é impresso o valor 
do B (local à main) : Valor de B : 30 
Logo, a opção correta é a que diz : 
 Valor de B : 10 
 Valor de B dentro da função FUNC1: -100 
 Valor de B : 20 
 Valor de B dentro da função FUNC2 : -200 
 Valor de B : 30 
 
1a Questão 
 
Considere o trecho de um programa escrito em C++. 
void func1 (bool x, int ini, int fim) { 
 for ( int y=ini; y != fim ; y++) { 
 x = !x; 
 if (x) 
 cout << y << endl; 
 else 
 cout << -y << endl; 
 } 
} 
int main() { 
 func1(false, 1, 7); 
} 
Marque a opção correta que mostra o que é impresso na tela. 
 
 
1, -2, -3, -4, -5, -6 
 
1, -2, 3, -4, 5, -6 
 
-1, -2, -3, -4, -5, -6 
 
-1, 2, -3, 4, -5, 6 
 
1, 2, 3, 4, 5, 6 
Respondido em 19/05/2020 21:48:37 
 
 
Explicação: 
Fazendo um teste de mesa temos que será impresso a seguinte sequência : 1 -
2 3 -4 5 -6, um embaixo do outro. 
Parte de um teste de mesa : 
 
x ini fim y 
false 1 7 1 
true 2 
false 
E continua x, ini, fim e y recebendo valores 
Tela : 
1 
-2 
3 
-4 
5 
-6 
 
 
 
 
 
 
 
 2a Questão 
 
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: 
 
 
Ponteiros. 
 
Envio de inteiro. 
 
Registro. 
 
Envio de valor. 
 
Passagem por valor. 
Respondido em 19/05/2020 21:48:41 
 
 
Explicação: 
Falso. Quando se tem endereço não é passagem por valor 
Passagem por 
valor. 
 
FAlso. Fala-se em endereço do valor Envio de inteiro. 
 
 Verdadeiro. Ponteiro armazena o endereço de memória 
de uma variável 
Ponteiros. 
 
Falso. Como é esse envio ? Envio de valor. 
 
FAlso. Sem sentido. Resgistro (struct em C++) agrega dados 
de tipos diferentes. 
Registro. 
 
 
Gabarito 
Coment. 
 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881691221&cod_hist_prova=194386375&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881691221&cod_hist_prova=194386375&pag_voltar=otackahttp://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881691221&cod_hist_prova=194386375&pag_voltar=otacka
 
 
 
 3a Questão 
 
Considere a função abaixo: 
int func (int a, int& b){ 
 a = b - a; 
 b = a * 2; 
 a = b * 2; 
 return a; 
} 
Considere o seguinte código na função main: 
 int x = 2, y = 3, z; 
 z = func (x, y); 
 cout << x << "; " << y << "; " << z; 
O que será impresso? 
 
 
1; 3; 1 
 
2; 2; 4 
 
1; 2; 4 
 
4; 2; 4 
 
2; 2; 1 
Respondido em 19/05/2020 21:48:32 
 
 
Explicação: 
a recebeu o valor de x que era 2 
b recebeu 3, a partir de y, que foi passado por referência. 
 
Executando a função, passo a passo, tem-se : 
a recebeu 1 
b recebeu 2 
a recebeu um novo valor, que é 4. 
Daí a função retorna o valor de a, que é 4. 
Voltando para a main temos que z recebeu o retorno da função que é 4, x não se 
alterou, valendo 2 e y recebeu 4, devido a alteração na função no parâmetro b, 
passado por referência. 
 Daí, na tela será impresso : 2; 2; 4 
 
 
 
 
 4a Questão 
 
Considere as seguintes afirmativas : 
I) Os vetores em C++, quando passados como parâmetros de funções, são 
obrigatoriamente passados "por valor" e não "por referência". 
II) Variáveis globais são um recurso adequado para troca de informações entre 
funções distintas. 
III) Caso uma função necessite retornar mais de um valor ao programa que a 
chamou, deve fazê-lo usando parâmetros passados "por valor". 
As afirmativas corretas são: 
 
 
Nenhuma está correta 
 
Apenas I 
 
Apenas III 
 
Apenas I e II 
 
Apenas II 
Respondido em 19/05/2020 21:48:34 
 
 
Explicação: 
Analisando cada afirmativa ... 
I . Falso. Em C++ os vetores passados como parâmetros são sempre passados por 
referência. 
II. FAlso. Variáveis globais são uma péssima forma de usar recursos, 
comprometendo principalmente a manutenção do programa. 
III. FAlso. A função poderá retornar explicitamente um valor com return, mas terá 
que passar o outro parâmetro por referência e não por valor. Outra forma, será 
passar todos os parâmetros por referência. 
Portanto, não opção correta. 
 
 
 
 
 5a Questão 
 
Funções são semelhantes aos procedimentos, exceto que uma função sempre 
retorna um valor. Um exemplo de função seria o conjunto de instruções para 
calcular o fatorial de um número e após a função ser executada, ela deve retornar o 
fatorial do número pedido. Marque a opção que representa um protótipo de função 
válido. 
 
 
retorno nomeFuncao(parametros); 
 
nome tipo(parametros); 
 
void float(int a, int b); 
 
tipo parametros(parametros); 
 
tipo parametros(int a, int b); 
Respondido em 19/05/2020 21:48:44 
 
 
Explicação: 
Por definição, o protótipo de uma função é formado da seguinte forma : 
 nome_da_função ( ); 
 
 
 
 
 6a Questão 
 
 
 
 
O programa executa perfeitamente independente da ordem das 
funções já que existem os seus protótipos. 
 
O programa não executa corretamente pois as funções devem 
ser descritas antes da função main(), para que o compilador 
consiga reconhecê-las. 
 
O programa não executa corretamente, pois o protótipo da 
função media( ) não apresenta a identificação dos parâmetros, 
mas apenas os tipos dos mesmos. 
 
O programa executa perfeitamente, 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. 
Respondido em 19/05/2020 21:49:14 
 
 
Gabarito 
Coment. 
 
 
 
 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881691221&cod_hist_prova=194386375&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881691221&cod_hist_prova=194386375&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881691221&cod_hist_prova=194386375&pag_voltar=otacka
 7a Questão 
 
Na passagem por ____________________ , o endereço da variável da função 
chamadora é passado para a função chamada e, dessa forma, o valor poderá ser 
alterado, ou não. 
 
 
número 
 
valor 
 
void 
 
caracter 
 
referência 
Respondido em 19/05/2020 21:49:05 
 
 
Explicação: 
Esse é o conceito de passagem por referência. 
 
 
 
 8a Questão 
 
Considere o trecho de um programa escrito em C++. 
int func1 (int vtx[], int tam) { 
 int soma=0; 
 for (int i=0 ; i < tam; i++) { 
 if (i % 2 !=0) 
 soma += vtx[i]; 
 } 
 return soma; 
} 
int main() { 
 int vt[5] = {10,20,30,40,50}; 
 cout << func1 (vt,5); 
} 
Marque a opção correta que mostra o que é impresso na tela. 
 
 
60 
 
40 
 
30 
 
50 
 
20 
Respondido em 19/05/2020 21:49:11 
 
 
Explicação: 
int func1 (int vtx[], int tam) { 
 int soma=0; //inicializa soma com zero. 
 for (int i=0 ; i < tam; i++) { 
 if (i % 2 !=0) //testa se i é ímpar. Se for, acumula na soma o valor de vtx[i] 
 soma += vtx[i]; 
 } 
 return soma; 
} 
 
Fazendo um teste de mesa parcial ... 
vetor tam soma i 
{10, 20, 30, 40, 50} 5 0 0 
 20 1 
 2 
E continua ... se vê que a função está somando os elementos do vetor que possuem 
índices ímpares. Logo, serão somados 20 e 40, que dará 60. 
A soma 60 é retornada e impressa na main. 
 
 
 
1a Questão 
 
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){ 
 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/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; 
 } 
 } 
} 
} 
 
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; 
} 
 
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; 
 } 
} 
Respondido em 19/05/2020 21:42:17 
 
 
Explicação: 
Na ordenação por seleção, a idéia é sempre procurar o menor elemento do vetor e 
inseri-lo no início do vetor. Procuramos o menor valor do vetor e colocamos ele 
em vetor. 
Procuramos o menor valor do vetor excluindo o já colocado e colocamos ele 
em vetor. E assim vamos indo até termos todo o vetor ordenado. 
Partindo sempre a partir do último elemento reordenado (a partir do i), o 
programa procura o menor elemento no vetor e o substitue pelo elemento i atual. 
É o que está ocorrendo na primeira opção! 
 
 
Gabarito 
Coment. 
 
 
 
 
 2a Questão 
 
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; 
}; 
 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3747637257&cod_hist_prova=187938935&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3747637257&cod_hist_prova=187938935&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3747637257&cod_hist_prova=187938935&pag_voltar=otacka
Suponha ainda que exista um vetor desta estrutura, definido como: 
 
aluno vet [100]; 
 
Marque a alternativa em que é atribuída de forma correta a nota 5.7 para o décimo 
primeiro elemento deste vetor. 
 
 
aluno.vet[10]=5.7; 
 
vet[10]=aluno.5.7; 
 
aluno.vet[10].nota=5.7; 
 
vet[10].aluno.nota=5.7 ; 
 
vet[10].nota=5.7; 
Respondido em 19/05/2020 21:41:56 
 
 
 
 
 3a Questão 
 
Pode-se definir uma estrutura heterogênea como sendo um conjunto de 
elementos, geralmente, agrupados sob uma lógica e associados por um 
nome. 
Esses elementos podem ser variáveis simples, matrizes ou ainda outras 
estruturas. Seja a definição de uma estrutura como: 
 
 struct aluno { 
 string nome; 
 float nota; 
}; 
 
Suponha ainda que exista um vetor desta estrutura, definido como: 
 aluno vet [ 100]; 
 
Marque a alternativa em que é atribuída de forma correta a nota 5.7 para o 
décimo primeiro elemento deste vetor. 
 
 
vet[10]=aluno.5.7; 
 
aluno.vet[10].nota=5.7; 
 
aluno.vet[10]=5.7; 
 
vet[10].aluno.nota=5.7 ; 
 
vet[10].nota=5.7; 
Respondido em 19/05/2020 21:42:39 
 
 
 
 
 4a Questão 
 
Pode-se definir uma estrutura heterogênea como sendo um conjunto de 
elementos, geralmente, agrupados sob uma lógica e associados por um nome. 
Esses elementos podem ser variáveis simples, matrizes ou ainda outras estruturas. 
Seja a definição de uma estrutura como: struct aluno { string nome; float media; 
}; Suponha ainda que exista um vetor desta estrutura, definido como: aluno vet [ 
10]; Marque a alternativa em que é atribuída de forma correta a media 6.0 para o 
quarto elemento deste vetor. 
 
 
aluno[3].10=6.0; 
 
aluno[10]=6.0; 
 
vet[3].media=6.0; 
 
aluno[3].media=6.0; 
 
vet[3].aluno=6.0; 
Respondido em 19/05/2020 21:42:25 
 
 
 
 
 5a Questão 
 
Em C++, quando uma variável é declarada como uma struct, o acesso para 
atribuição e leitura dos membros (campos) deste registro se dá pelo operador : 
 
 
-> (seta). 
 
& (e comercial ou eitza). 
 
, (vírgula). 
 
* (asterisco). 
 
∙ (ponto). 
Respondido em 19/05/2020 21:42:35 
 
 
Explicação: 
Por definição, o operador que permite acessar os campos de uma variável struct é 
o ponto (.). 
 
 
 
 
 
 6a Questão 
 
Marque a opção correta, considerando 
 
struct Livro { 
int codigo; 
float preco; 
} liv; 
 
 
liv->preco = 30.70; 
 
liv.preco = 30.70; 
 
Livro->liv.codigo = 12345; 
 
Livro.liv.codigo = 12345; 
 
Livro.codigo = 12345; 
Respondido em 19/05/2020 21:42:20 
 
 
 
 
 7a Questão 
 
Marque a afirmativa correta para a "Inserção em lista linear sequencial ordenada". 
 
 
Consiste em fazer uma busca em um vetor desordenado, dividindo o espaço 
de busca ao meio e verificando se o dado está no meio ou, antes do meio ou 
depois do meio. 
 
Consiste em fazer uma busca em um vetor já ordenado, dividindo o espaço 
de busca ao meio e verificando se o dado está no meio ou, antes do meio ou 
depois do meio. 
 
É 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 adicionar um valor no vetor, mantendo a ordem existente e 
ajustando o total de elementos. 
Respondido em 19/05/2020 21:42:41 
 
 
Explicação: 
Consiste em adicionar um valor no vetor, mantendo a ordem existente e ajustando 
o total de elementos. 
Só pode ocorrer, no entanto, se a lista não estiver cheia. 
 
 
 
 
 8a Questão 
 
Qual das seguintes estruturas de dados é classificada como heterogênea? 
 
 
Loop 
 
Pilha 
 
Fila 
 
Registro 
 
Vetor 
Respondido em 19/05/2020 21:42:28 
 
 
Explicação: 
Registro permite agregar dados de tipos diferentes. 
Vetor permite agregar dados do mesmo tipo. 
Pilha e fila implementadas com vetor ou lista encadeada. 
Loop : termo genérico para repetições. 
1a Questão 
 
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){ 
 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/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; 
 } 
 } 
} 
} 
 
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; 
} 
 
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; 
 } 
} 
Respondido em 19/05/2020 21:43:36 
 
 
Explicação: 
Na ordenação por seleção, a idéia é sempre procurar o menor elemento do vetor e 
inseri-lo no início do vetor. Procuramos o menor valor do vetor e colocamos ele 
em vetor. 
Procuramos o menor valor do vetor excluindo o já colocado e colocamos ele 
em vetor. E assim vamos indo até termos todo o vetor ordenado. 
Partindo sempre a partir do último elemento reordenado (a partir do i), o 
programa procura o menor elemento no vetor e o substitue pelo elemento i atual. 
É o que está ocorrendo na primeira opção! 
 
 
Gabarito 
Coment. 
 
 
 
 
 2a Questão 
 
Marque a afirmativa correta para a "Inserção em lista linear sequencial ordenada". 
 
 
É 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, 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. 
Respondido em 19/05/2020 21:43:30 
 
 
Explicação: 
Consiste em adicionar um valor no vetor, mantendo a ordem existente e ajustando 
o total de elementos. 
Só pode ocorrer, no entanto, se a lista não estiver cheia. 
 
 
 
 
 3a Questão 
 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881647263&cod_hist_prova=194384364&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881647263&cod_hist_prova=194384364&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881647263&cod_hist_prova=194384364&pag_voltar=otackaPode-se definir uma estrutura heterogênea como sendo um conjunto de 
elementos, geralmente, agrupados sob uma lógica e associados por um 
nome. 
Esses elementos podem ser variáveis simples, matrizes ou ainda outras 
estruturas. Seja a definição de uma estrutura como: 
 
 struct aluno { 
 string nome; 
 float nota; 
}; 
 
Suponha ainda que exista um vetor desta estrutura, definido como: 
 aluno vet [ 100]; 
 
Marque a alternativa em que é atribuída de forma correta a nota 5.7 para o 
décimo primeiro elemento deste vetor. 
 
 
vet[10].aluno.nota=5.7 ; 
 
aluno.vet[10].nota=5.7; 
 
vet[10].nota=5.7; 
 
vet[10]=aluno.5.7; 
 
aluno.vet[10]=5.7; 
Respondido em 19/05/2020 21:43:51 
 
 
 
 
 4a Questão 
 
Pode-se definir uma estrutura heterogênea como sendo um conjunto de 
elementos, geralmente, agrupados sob uma lógica e associados por um nome. 
Esses elementos podem ser variáveis simples, matrizes ou ainda outras estruturas. 
Seja a definição de uma estrutura como: struct aluno { string nome; float media; 
}; Suponha ainda que exista um vetor desta estrutura, definido como: aluno vet [ 
10]; Marque a alternativa em que é atribuída de forma correta a media 6.0 para o 
quarto elemento deste vetor. 
 
 
aluno[3].media=6.0; 
 
vet[3].media=6.0; 
 
aluno[10]=6.0; 
 
aluno[3].10=6.0; 
 
vet[3].aluno=6.0; 
Respondido em 19/05/2020 21:44:01 
 
 
 
 
 5a Questão 
 
Pode-se definir uma estrutura heterogênea como sendo um conjunto de 
elementos, geralmente, agrupados sob uma lógica e associados por um nome. 
Esses elementos podem ser variáveis simples, matrizes ou ainda outras estruturas. 
Seja a definição de uma estrutura como: 
struct aluno { 
string nome; 
float nota; 
}; 
 
Suponha ainda que exista um vetor desta estrutura, definido como: 
 
aluno vet [100]; 
 
Marque a alternativa em que é atribuída de forma correta a nota 5.7 para o décimo 
primeiro elemento deste vetor. 
 
 
vet[10]=aluno.5.7; 
 
aluno.vet[10].nota=5.7; 
 
aluno.vet[10]=5.7; 
 
vet[10].aluno.nota=5.7 ; 
 
vet[10].nota=5.7; 
Respondido em 19/05/2020 21:44:06 
 
 
 
 
 6a Questão 
 
Marque a opção correta, considerando 
 
struct Livro { 
int codigo; 
float preco; 
} liv; 
 
 
liv->preco = 30.70; 
 
Livro.codigo = 12345; 
 
Livro->liv.codigo = 12345; 
 
Livro.liv.codigo = 12345; 
 
liv.preco = 30.70; 
Respondido em 19/05/2020 21:44:15 
 
 
 
 
 7a Questão 
 
Qual das seguintes estruturas de dados é classificada como heterogênea? 
 
 
Loop 
 
Fila 
 
Pilha 
 
Vetor 
 
Registro 
Respondido em 19/05/2020 21:44:17 
 
 
Explicação: 
Registro permite agregar dados de tipos diferentes. 
Vetor permite agregar dados do mesmo tipo. 
Pilha e fila implementadas com vetor ou lista encadeada. 
Loop : termo genérico para repetições. 
 
 
Gabarito 
Coment. 
 
 
 
 
 8a Questão 
 
Em C++, quando uma variável é declarada como uma struct, o acesso para 
atribuição e leitura dos membros (campos) deste registro se dá pelo operador : 
 
 
∙ (ponto). 
 
, (vírgula). 
 
& (e comercial ou eitza). 
 
* (asterisco). 
 
-> (seta). 
Respondido em 19/05/2020 21:44:21 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881647263&cod_hist_prova=194384364&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881647263&cod_hist_prova=194384364&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881647263&cod_hist_prova=194384364&pag_voltar=otacka
 
 
Explicação: 
Por definição, o operador que permite acessar os campos de uma variável struct é 
o ponto (.). 
 
 
1a Questão 
 
Qual das seguintes estruturas de dados é classificada como heterogênea? 
 
 
Fila 
 
Loop 
 
Pilha 
 
Registro 
 
Vetor 
Respondido em 19/05/2020 21:44:19 
 
 
Explicação: 
Registro permite agregar dados de tipos diferentes. 
Vetor permite agregar dados do mesmo tipo. 
Pilha e fila implementadas com vetor ou lista encadeada. 
Loop : termo genérico para repetições. 
 
 
Gabarito 
Coment. 
 
 
 
 
 2a Questão 
 
Marque a afirmativa correta para a "Inserção em lista linear sequencial ordenada". 
 
 
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. 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881655926&cod_hist_prova=194384735&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881655926&cod_hist_prova=194384735&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881655926&cod_hist_prova=194384735&pag_voltar=otacka
 
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. 
Respondido em 19/05/2020 21:44:25 
 
 
Explicação: 
Consiste em adicionar um valor no vetor, mantendo a ordem existente e ajustando 
o total de elementos. 
Só pode ocorrer, no entanto, se a lista não estiver cheia. 
 
 
 
 
 3a Questão 
 
Pode-se definir uma estrutura heterogênea como sendo um conjunto de 
elementos, geralmente, agrupados sob uma lógica e associados por um 
nome. 
Esses elementos podem ser variáveis simples, matrizes ou ainda outras 
estruturas. Seja a definição de uma estrutura como: 
 
 struct aluno { 
 string nome; 
 float nota; 
}; 
 
Suponha ainda que exista um vetor desta estrutura, definido como: 
 aluno vet [ 100]; 
 
Marque a alternativa em que é atribuída de forma correta a nota 5.7 para o 
décimo primeiro elemento deste vetor. 
 
 
vet[10].aluno.nota=5.7 ; 
 
vet[10]=aluno.5.7; 
 
aluno.vet[10]=5.7; 
 
vet[10].nota=5.7; 
 
aluno.vet[10].nota=5.7; 
Respondido em 19/05/2020 21:44:33 
 
 
 
 
 4a Questão 
 
Pode-se definir uma estrutura heterogênea como sendo um conjunto de 
elementos, geralmente, agrupados sob uma lógica e associados por um nome. 
Esses elementos podem ser variáveis simples, matrizes ou ainda outras estruturas. 
Seja a definição de uma estrutura como: struct aluno { string nome; float media; 
}; Suponha ainda que exista um vetor desta estrutura, definido como: aluno vet [ 
10]; Marque a alternativa em que é atribuída de forma correta a media 6.0 para o 
quarto elemento deste vetor. 
 
 
vet[3].media=6.0; 
 
aluno[3].10=6.0; 
 
aluno[10]=6.0; 
 
aluno[3].media=6.0; 
 
vet[3].aluno=6.0; 
Respondido em 19/05/2020 21:44:38 
 
 
 
 
 5a Questão 
 
Em C++, quando uma variável é declarada como uma struct, o acesso para 
atribuição e leitura dos membros (campos) deste registro se dá pelo operador : 
 
 
-> (seta). 
 
& (e comercial ou eitza). 
 
∙ (ponto). 
 
, (vírgula). 
 
* (asterisco). 
Respondido em 19/05/2020 21:45:23 
 
 
Explicação: 
Por definição, o operador que permite acessar os campos de uma variável struct é 
o ponto (.). 
 
 
 
 
 
 6a Questão 
 
Marque a opção correta, considerando 
 
struct Livro { 
int codigo; 
float preco; 
} liv; 
 
 
Livro.codigo = 12345; 
 
Livro.liv.codigo = 12345; 
 
liv.preco = 30.70; 
 
liv->preco = 30.70; 
 
Livro->liv.codigo = 12345; 
Respondido em 19/05/2020 21:44:52 
 
 
 
 
 7a Questão 
 
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 elementospodem ser variáveis simples, matrizes ou ainda outras estruturas. 
Seja a definição de uma estrutura como: 
struct aluno { 
string nome; 
float nota; 
}; 
 
Suponha ainda que exista um vetor desta estrutura, definido como: 
 
aluno vet [100]; 
 
Marque a alternativa em que é atribuída de forma correta a nota 5.7 para o décimo 
primeiro elemento deste vetor. 
 
 
aluno.vet[10]=5.7; 
 
vet[10].nota=5.7; 
 
vet[10].aluno.nota=5.7 ; 
 
aluno.vet[10].nota=5.7; 
 
vet[10]=aluno.5.7; 
Respondido em 19/05/2020 21:45:14 
 
 
 
 
 8a Questão 
 
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){ 
 for (int i = 0; i < n; i++) 
 if (v[i] == valor) 
 return i; 
 return -1; 
} 
 
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) { 
 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; 
 } 
 } 
} 
} 
 
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; 
} 
Respondido em 19/05/2020 21:45:28 
 
 
Explicação: 
Na ordenação por seleção, a idéia é sempre procurar o menor elemento do vetor e 
inseri-lo no início do vetor. Procuramos o menor valor do vetor e colocamos ele 
em vetor. 
Procuramos o menor valor do vetor excluindo o já colocado e colocamos ele 
em vetor. E assim vamos indo até termos todo o vetor ordenado. 
Partindo sempre a partir do último elemento reordenado (a partir do i), o 
programa procura o menor elemento no vetor e o substitue pelo elemento i atual. 
É o que está ocorrendo na primeira opção! 
 
 
1a Questão 
 
Caso seja empregada uma busca binária em uma lista sequencial ordenada com 
2048 valores, qual seria o número máximo de comparações para encontrar um 
valor que esteja na lista? 
 
 
12 
 
8 
 
9 
 
11 
 
10 
Respondido em 19/05/2020 21:46:31 
 
 
Explicação: 
Como a busca binária sai continuamente dividindo o conjunto de dados ao meio 
(em duas partes), então vamos fatorar e organizar o resultado como potência de 
base 2. 
 Fatorando 2048 temos 2 11 
 Portanto, a resposta é 11. 
 
 
 
 
 2a Questão 
 
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 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. 
 
Se o item for menor que o item que está na metade do vetor, o item foi 
encontrado. 
Respondido em 19/05/2020 21:46:10 
 
 
Explicação: 
Neste tipo de busca, o vetor deve estar ordenado. 
Divide-se o conjunto de dados ao meio e procura-se no meio do vetor. Se achou, 
retorna a posição do dado do meio. SE não achou, verifica-se se o valor 
procurado vem antes do valor do meio. Se for verdade, redefine-se o fim do 
vetor, voltando a realizar a busca à esquerda do meio. Se o valor procurado vier 
depois do valor do meio do vetor, então redefine-se o início e segue-se para a 
busca na parte à direita do meio do vetor. 
 
 
Gabarito 
Coment. 
 
 
 
 
 3a Questão 
 
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: 
 
 
binária. 
 
linear. 
 
por comparação. 
 
por contagem. 
 
randômica. 
Respondido em 19/05/2020 21:45:57 
 
 
Gabarito 
Coment. 
 
 
 
 
 4a Questão 
 
Sabendo-se que o método de seleção também é um método de ordenação que 
baseia seu algoritmo em trocas entre os elementos de um vetor, se submetermos a 
sequencia de inteiros armazenada em um vetor inicialmente na seguinte ordem : 
13, 23, 3, 8, 1. Pode-se dizer que quando o menor elemento do vetor alcançar sua 
posição final, a ordenação apresentada no vetor é: 
 
 
1,23,13,8,3 
 
1,13,23,8,3 
 
1,8,3,23,13 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881665946&cod_hist_prova=194385274&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881665946&cod_hist_prova=194385274&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881665946&cod_hist_prova=194385274&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881665946&cod_hist_prova=194385274&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881665946&cod_hist_prova=194385274&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881665946&cod_hist_prova=194385274&pag_voltar=otacka
 
1,23,3,8,13 
 
1,3,23,8,13 
Respondido em 19/05/2020 21:45:43 
 
 
Gabarito 
Coment. 
 
 
 
 
 5a Questão 
 
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. 
 
 
7 e 1 
 
6 e 1 
 
5 e 5 
 
6 e 4 
 
6 e 2 
Respondido em 19/05/2020 21:45:586a Questão 
 
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". 
 
 
Inserção 
 
MergeSort 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881665946&cod_hist_prova=194385274&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881665946&cod_hist_prova=194385274&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881665946&cod_hist_prova=194385274&pag_voltar=otacka
 
Seleção 
 
QuickSort 
 
Bolha 
Respondido em 19/05/2020 21:46:12 
 
 
Gabarito 
Coment. 
 
 
 
 
 7a Questão 
 
Marque a afirmativa correta para a "Ordenação em Listas Lineares Sequenciais". 
 
 
Consiste em adicionar um valor no vetor, alterando a ordem existente e 
ajustando o total de elementos. 
 
Consiste em fazer uma busca em um vetor já ordenado, dividindo o espaço 
de busca ao meio e verificando se o dado está no meio ou, antes do meio ou 
depois do meio. 
 
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. 
 
É o processo pelo qual um conjunto de dados é colocado em uma ordem 
crescente ou decrescente. 
Respondido em 19/05/2020 21:46:06 
 
 
Gabarito 
Coment. 
 
 
 
 
 8a Questão 
 
Marque a afirmativa correta para a "inserção incremental". 
 
 
É um tipo de ordenação por intercalação 
 
Os pivôs são escolhidos aleatoriamente. 
 
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. 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881665946&cod_hist_prova=194385274&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881665946&cod_hist_prova=194385274&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881665946&cod_hist_prova=194385274&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881665946&cod_hist_prova=194385274&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881665946&cod_hist_prova=194385274&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881665946&cod_hist_prova=194385274&pag_voltar=otacka
1a Questão 
 
 
Este vetor foi ordenado pelo método: 
 
 
Ordenação por seleção (selection sort). 
 
Ordenação por inserção (insertion sort). 
 
Quicksort. 
 
Método da bolha (bubble sort). 
 
Mergesort. 
Respondido em 19/05/2020 21:49:44 
 
 
Explicação: 
O bubblesort trabalha comparando e trocando, se preciso, duplas de dados 
vizinhos. Portanto, pelo comportamento na sequÊncia descrita temos o método da 
bolha ou bubblesort. 
 
 
 
 
 2a Questão 
 
 
 
 
if(vet[j] == vet[j-1] ) 
 { 
 aux=vet[j]; 
 vet[j]= vet[j-1]; 
 vet[j-1]=aux; 
 } 
 
if(vet[j-1] < vet[j] ) 
 { 
 aux=vet[j]; 
 vet[j]= vet[j-1]; 
 vet[j-1]=aux; 
 } 
 
if(vet[j] < vet[j-1] ) 
 { 
 aux=vet[j]; 
 vet[j]< vet[j-1]; 
 vet[j-1]=aux; 
 } 
 
if(vet[j] < vet[j-1] ) 
 { 
 aux=vet[j]; 
 vet[j-1]= vet[j]; 
 vet[j-1]=aux; 
 } 
 
if(vet[j-1] > vet[j] ) 
 { 
 aux=vet[j]; 
 vet[j]= vet[j-1]; 
 vet[j-1]=aux; 
 } 
Respondido em 19/05/2020 21:49:50 
 
 
 
 
 3a Questão 
 
O processo de rearranjar um conjunto de dados em uma ordem crescente ou 
decrescente é chamado de ordenação. Existem várias técnicas de ordenação, 
entretanto a técnica que procura o menor valor entre todos os elementos do vetor 
e troca-o pelo primeiro elemento; para os n - 1 elementos restantes, determinação 
do elemento de menor valor e troca pelo segundo elemento e assim 
sucessivamente, é chamado de: 
 
 
Seleção 
 
Binária 
 
Bolha 
 
Hash 
 
Inserção 
Respondido em 19/05/2020 21:49:56 
 
 
Gabarito 
Coment. 
 
 
 
 
 4a Questão 
 
Estude atentamente o código a segir: 
int deciframe(int v[ ], int tam, int e){ 
int i = 0, f = tam -1, m; 
while ( i <= f ){ 
m = ( i + f ) / 2; 
if ( v[m] == e ) { return m; } 
if ( e < v[m] ) { f = m - 1; } 
else { i = m + 1; } 
} 
return -1; 
} 
Sabendo que a chamada da mesma foi feita com os parâmetros recebendo os 
seguintes valores, o que ela retornaria? 
v[10] = {0, 2, 4, 6, 8, 10, 20, 100} 
tam = 8 
e = 0 
 
 
1 
 
-2 
 
-1 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881703731&cod_hist_prova=194386918&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881703731&cod_hist_prova=194386918&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881703731&cod_hist_prova=194386918&pag_voltar=otacka
 
0 
 
2 
Respondido em 19/05/2020 21:50:04 
 
 
Explicação: 
A busca pode retornar o índice do elemento encontrado ou pode retornar -1, caso 
o elemento e não seja encontrado. Vemos que o valor de e é encontrado. Logo, a 
função retornará a posição do valor e = 0 no vetor. No caso, o elemento zero está 
na posição 0. 
Resposta : 0 
 
 
 
 
 5a Questão 
 
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 
 
Inserção 
 
Bolha 
 
Pesquisa sequencial 
Respondido em 19/05/2020 21:50:30 
 
 
Gabarito 
Coment. 
 
 
 
 
 6a Questão 
 
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 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881703731&cod_hist_prova=194386918&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881703731&cod_hist_prova=194386918&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881703731&cod_hist_prova=194386918&pag_voltar=otacka
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 binária 
 
Pesquisa de seleção 
 
Tabela Hash 
 
Pesquisa sequêncial 
 
Pesquisa ordenada 
Respondido em 19/05/2020 21:50:10 
 
 
Explicação: 
O enunciado descrevea busca binária. 
A busca sequencial trabalha sequencialmente testando elemento a elemento. 
Pesquisa de seleção ou ordenada não foram abordadas. 
Tabela hash trabalha com função hash e não se encaixa na descrição feita. 
 
 
Gabarito 
Coment. 
 
 
 
 
 7a Questão 
 
Qual a importância de se entender a "ordenação" de dados ? 
 
 
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 manter 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. 
 
A ordenação é a base na qual, muitos algoritmos são construídos. 
Entendendo a ordenação, tem-se conhecimento para resolver outros 
problemas. 
Respondido em 19/05/2020 21:50:16 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881703731&cod_hist_prova=194386918&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881703731&cod_hist_prova=194386918&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881703731&cod_hist_prova=194386918&pag_voltar=otacka
 
 
Gabarito 
Coment. 
 
 
 
 
 8a Questão 
 
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 indexada 
 
pesquisa de cadeias 
 
pesquisa cadeias indexada 
 
pesquisa sequencial 
 
pesquisa binária 
 
1a Questão 
 
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 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881703731&cod_hist_prova=194386918&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881703731&cod_hist_prova=194386918&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881703731&cod_hist_prova=194386918&pag_voltar=otacka
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 binária 
 
Tabela Hash 
 
Pesquisa de seleção 
 
Pesquisa ordenada 
 
Pesquisa sequêncial 
Respondido em 19/05/2020 22:01:52 
 
 
Explicação: 
O enunciado descreve a busca binária. 
A busca sequencial trabalha sequencialmente testando elemento a elemento. 
Pesquisa de seleção ou ordenada não foram abordadas. 
Tabela hash trabalha com função hash e não se encaixa na descrição feita. 
 
 
Gabarito 
Coment. 
 
 
 
 
 2a Questão 
 
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; 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881781082&cod_hist_prova=194391275&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881781082&cod_hist_prova=194391275&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881781082&cod_hist_prova=194391275&pag_voltar=otacka
if (valor < v[meio]) fim = meio -1; 
 else ini = meio+1; 
} 
return -1; 
} 
 
 
pesquisa de cadeias 
 
pesquisa binária 
 
pesquisa indexada 
 
pesquisa sequencial 
 
pesquisa cadeias indexada 
Respondido em 19/05/2020 22:01:59 
 
 
Gabarito 
Coment. 
 
 
 
 
 3a Questão 
 
Qual a importância de se entender a "ordenação" de dados ? 
 
 
A ordenação é a base na qual, muitos sistemas 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 manter outros problemas. 
 
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 algoritmos são construídos. 
Entendendo a ordenação, tem-se conhecimento para resolver outros 
problemas. 
Respondido em 19/05/2020 22:02:04 
 
 
Gabarito 
Coment. 
 
 
 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881781082&cod_hist_prova=194391275&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881781082&cod_hist_prova=194391275&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881781082&cod_hist_prova=194391275&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881781082&cod_hist_prova=194391275&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881781082&cod_hist_prova=194391275&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881781082&cod_hist_prova=194391275&pag_voltar=otacka
 
 4a Questão 
 
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 
 
Seleção 
 
Bolha 
 
Pesquisa sequencial 
 
Pesquisa binária 
Respondido em 19/05/2020 22:02:07 
 
 
Gabarito 
Coment. 
 
 
 
 
 5a Questão 
 
Estude atentamente o código a segir: 
int deciframe(int v[ ], int tam, int e){ 
int i = 0, f = tam -1, m; 
while ( i <= f ){ 
m = ( i + f ) / 2; 
if ( v[m] == e ) { return m; } 
if ( e < v[m] ) { f = m - 1; } 
else { i = m + 1; } 
} 
return -1; 
} 
Sabendo que a chamada da mesma foi feita com os parâmetros recebendo os 
seguintes valores, o que ela retornaria? 
v[10] = {0, 2, 4, 6, 8, 10, 20, 100} 
tam = 8 
e = 0 
 
 
1 
 
-1 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881781082&cod_hist_prova=194391275&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881781082&cod_hist_prova=194391275&pag_voltar=otackahttp://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881781082&cod_hist_prova=194391275&pag_voltar=otacka
 
-2 
 
2 
 
0 
Respondido em 19/05/2020 22:02:30 
 
 
Explicação: 
A busca pode retornar o índice do elemento encontrado ou pode retornar -1, caso 
o elemento e não seja encontrado. Vemos que o valor de e é encontrado. Logo, a 
função retornará a posição do valor e = 0 no vetor. No caso, o elemento zero está 
na posição 0. 
Resposta : 0 
 
 
 
 
 6a Questão 
 
 
Este vetor foi ordenado pelo método: 
 
 
Quicksort. 
 
Ordenação por seleção (selection sort). 
 
Método da bolha (bubble sort). 
 
Ordenação por inserção (insertion sort). 
 
Mergesort. 
Respondido em 19/05/2020 22:02:19 
 
 
Explicação: 
O bubblesort trabalha comparando e trocando, se preciso, duplas de dados 
vizinhos. Portanto, pelo comportamento na sequÊncia descrita temos o método da 
bolha ou bubblesort. 
 
 
 
 
 7a Questão 
 
Os métodos de ordenação são muito utilizados para facilitar a recuperação 
posterior de itens ordenados. Existem vários métodos de ordenação, por esse 
motivo, assinale corretamente a alternativa que mostra o nome do método que 
utiliza a estratégia de ordenação por trocas de vizinhos e é considerado o método 
mais simples. 
 
 
Hash 
 
Inserção 
 
Binária 
 
Seleção 
 
Bolha 
Respondido em 19/05/2020 22:02:42 
 
 
Gabarito 
Coment. 
 
 
 
 
 8a Questão 
 
Analisando o trecho de código a seguir: 
inicio=0; 
fim= tamanho - 1; 
meio=(inicio+fim)/2; 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881781082&cod_hist_prova=194391275&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881781082&cod_hist_prova=194391275&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881781082&cod_hist_prova=194391275&pag_voltar=otacka
while(procura != nomeVetor[meio] && inicio != fim) 
{ 
 if(procura > nomeVetor[meio]) 
 inicio=meio+1; 
 else 
 fim=meio; 
 meio=(inicio+fim)/2; 
} 
if(nomeVetor[meio]==procura) 
 cout<<"\n....: "< < outroVetor[meio]<<endl; 
else 
 cout<<"\nDado nao encontrado\n";</endl; 
Pode-se afirmar que: 
 
 
trata-se da implementação do algortimo de ordenação bolha. 
 
trata-se da implementação do algortimo de busca sequencial 
 
trata-se da implementação do algortimo de busca binária. 
 
trata-se da implementação do algortimo de ordenação por seleção. 
 
trata-se da implementação do algortimo de ordenação por inserção. 
 
 
1a Questão 
 
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 
 
Pilha Encadeada 
 
Fila Sequencial 
 
Lista Encadeada 
 
Pilha Sequencial 
Respondido em 19/05/2020 21:51:00 
 
 
Gabarito 
Coment. 
 
 
 
 
 2a Questão 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881711284&cod_hist_prova=194387286&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881711284&cod_hist_prova=194387286&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881711284&cod_hist_prova=194387286&pag_voltar=otacka
 
Considere uma lista sequencial L com n fichas de professores, sendo que cada 
ficha de professor é modelada pela struct : 
struct professor { 
int matricula; 
char titulo[30]; 
}; 
e a lista L é assim declarada : professor L[n]; 
 
Assinale o trecho que corretamente exibe todas as matrículas e titulações de todos 
os n professores de L . 
 
 
for (int i = 0; i < n; i++) 
cout << L[i] << endl; 
 
for (int i = 0; i < n; i++) 
cout << L[i].matricula << " " << L[i].titulo[30] << endl; 
 
for (int i = 0; i < n; i++) 
cout << L.matricula[i] << " " << L.titulo[i] << endl; 
 
for (int i = 0; i < n; i++) 
cout << L[i].matricula << " " << L[i].titulo << endl; 
 
for (int i = 0; i < n; i++) 
cout << L.matricula << " " << L.titulo << endl; 
Respondido em 19/05/2020 21:51:03 
 
 
Explicação: 
Como L é um vetor de n elementos do tipo professor. Então, para percorrer o 
vetor de índice i temos que fazer L[i] seguido do ponto seguido do campo, que 
pode ser matricula ou titulo. 
Assiim, a opção correta é 
for (int i = 0; i < n; i++) 
 cout << L[i].matricula << " " << L[i].titulo << endl; 
 
 
 
 
 3a Questão 
 
Considere as seguintes afirmações: I. Só podemos ter uma matriz de no máximo 
duas dimensões. Exemplo: C[100][100]. II. Ao declararmos um vetor int A[10], 
se escrevemos A[2] acessamos o segundo elemento do vetor. III. Uma string 
declarada como char B[30] armazena no máximo 30 caracteres. Escolha a 
alternativa correta: 
 
 
Estão corretas apenas as afirmativas I e III. 
 
Está correta apenas a afirmativa II. 
 
Está correta apenas a afirmativa I. 
 
Estão corretas apenas as afirmativas I e II. 
 
Nenhuma afirmação está correta. 
Respondido em 19/05/2020 21:51:13 
 
 
Explicação: 
Analisando cada afirmativa : 
 I. Só podemos ter uma matriz de no máximo duas dimensões. Exemplo: 
C[100][100]. 
 Falso. Podemos ter matrizes unidimensionais, tridimensionais, etc... 
 II. Ao declararmos um vetor int A[10], se escrevemos A[2] acessamos o segundo 
elemento do vetor. 
Falso. Em C++ o índice inicial é zero. Logo, A[2] é o elemento de índice 2, ou 
seja, o 3o. elemento do vetor. 
III. Uma string declarada como char B[30] armazena no máximo 30 caracteres. 
Escolha a alternativa correta: 
Falso. B pode armazenar no máximo 29 caracteres que sejam dados, pois existe 
uma área para o caracter nulo. 
Logo, todas as opções são falsas. 
 
 
 
 
 4a Questão 
 
Considere uma lista com n livros, em que cada livro é modelado pela 
struct : 
 
struct Livro { 
 string titulo, editora, autor; 
 float preco; 
}; 
 
A função X abaixo 
 
void X (Livro v[ ], int &n, Livro L) 
{ 
 v[n] = L; 
 n++; 
 cout << "Operação realizada com sucesso."; 
} 
 
implementa a operação de : 
 
 
Inserção 
 
Busca 
 
Inicialização 
 
Ordenação por inserção 
 
Substituição 
Respondido em 19/05/2020 21:50:51 
 
 
Gabarito 
Coment. 
 
 
 
 
 5a Questão 
 
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 é: 
 
 
Vetor 
 
Matriz 
 
Variável 
 
Registro 
 
Função 
Respondido em 19/05/2020 21:51:06 
 
 
Gabarito 
Coment. 
 
 
 
 
 6a Questão 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881711284&cod_hist_prova=194387286&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881711284&cod_hist_prova=194387286&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881711284&cod_hist_prova=194387286&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881711284&cod_hist_prova=194387286&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881711284&cod_hist_prova=194387286&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881711284&cod_hist_prova=194387286&pag_voltar=otacka
 
São métodos ou algoritmos conhecidos de ordenação de dadospor troca: 
 
 
hashing e bubble sort. 
 
ordenação shell e hashing. 
 
busca por ordenação e ordenação shell. 
 
quicksort e hashing. 
 
bubble sort e quicksort. 
Respondido em 19/05/2020 21:51:08 
 
 
Explicação: 
Bubble sort é o algoritmo mais simples, mas o menos eficientes. Neste algoritmo 
cada elemento da posição i será comparado com o elemento da posição i + 1, ou 
seja, um elemento da posição 2 será comparado com o elemento da posição 3. 
Caso o elemento da posição 2 for maior que o da posição 3, eles trocam de lugar e 
assim sucessivamente. Por causa dessa forma de execução, o vetor terá que ser 
percorrido quantas vezes que for necessária, tornando o algoritmo ineficiente para 
listas muito grandes. 
 
O Quicksort é o algoritmo mais eficiente na ordenação por comparação. Nele se 
escolhe um elemento chamado de pivô, a partir disto é organizada a lista para que 
todos os números anteriores a ele sejam menores que ele, e todos os números 
posteriores a ele sejam maiores que ele. Ao final desse processo o número pivô já 
está em sua posição final. Os dois grupos desordenados recursivamente sofreram 
o mesmo processo até que a lista esteja ordenada. 
 
 
 
 
 
 7a Questão 
 
Considere as seguintes afirmações sobre Listas Sequenciais: 
I - São estruturas lineares que utilizam as primeiras posições de um vetor para 
armazenar os dados de interesse. 
II - São compostas pelo conjunto dos dados que se deseja armazenar e por uma 
variável inteira que indica a quantidade de dados armazenados. 
III - Os dados são sempre inseridos ou removidos no final da lista, tomando-se o 
cuidado de atualizar a quantidade de dados da mesma. 
IV - A lista pode admitir ou não admitir que haja dados repetidos (listas podem 
ser com ou sem repetição). 
Marque a opção que contém apenas todas as afirmações verdadeiras: 
 
 
I, II 
 
I, III, IV 
 
I, II, IV 
 
I, II, III 
 
I, II, III, IV 
Respondido em 19/05/2020 21:50:57 
 
 
Explicação: 
Analisando cada afirmativa : 
 
I - São estruturas lineares que utilizam as primeiras posições de um vetor para 
armazenar os dados de interesse. 
Verdadeiro. As inserções vão ocorrendo do início do vetor (índice zero) em 
direção ao fim. 
 
II - São compostas pelo conjunto dos dados que se deseja armazenar e por uma 
variável inteira que indica a quantidade de dados 
armazenados. 
Verdadeiro. Armazenam-se os dados e controla-se a quantidade de dados na lista. 
 
III - Os dados são sempre inseridos ou removidos no final da lista, tomando-se o 
cuidado de atualizar a quantidade de dados 
da mesma. 
Falso. A inserção pode ser no início, no meio ou no final da lista. Na verdade, 
pode ocorrer inserção e remoção em qualquer posição. 
 
IV - A lista pode admitir ou não admitir que haja dados repetidos (listas podem 
ser com ou sem repetição). 
Verdadeiro. Uma lista pode ou não ter dados repetidos. 
 
Resposta certa : As afirmativas I, II, IV estão certas 
 
 
 
 
 8a Questão 
 
 
 
 
for (int i = 
0; i < n; 
i++) 
 cout << 
L[i].matric
ula << " " 
<< 
L[i].nome[
30] << 
endl; 
 
for (int i = 
0; i < n; 
i++) 
 cout << 
L[i].matric
ula << " " 
<< 
L[i].nome 
<< endl; 
 
for (int i = 
0; i < n; 
i++) 
 cout << 
L[i] << 
endl; 
 
for (int i = 
0; i < n; 
i++) 
 cout << 
L.matricula 
<< " " << 
L.nome << 
endl; 
 
for (int i = 
0; i < n; 
i++) 
 cout << 
L.matricula
[i] << " " 
<< 
L.nome[i] 
<< endl; 
 
1a Questão 
 
São métodos ou algoritmos conhecidos de ordenação de dados por troca: 
 
 
bubble sort e quicksort. 
 
ordenação shell e hashing. 
 
hashing e bubble sort. 
 
quicksort e hashing. 
 
busca por ordenação e ordenação shell. 
Respondido em 19/05/2020 21:51:32 
 
 
Explicação: 
Bubble sort é o algoritmo mais simples, mas o menos eficientes. Neste algoritmo 
cada elemento da posição i será comparado com o elemento da posição i + 1, ou 
seja, um elemento da posição 2 será comparado com o elemento da posição 3. 
Caso o elemento da posição 2 for maior que o da posição 3, eles trocam de lugar e 
assim sucessivamente. Por causa dessa forma de execução, o vetor terá que ser 
percorrido quantas vezes que for necessária, tornando o algoritmo ineficiente para 
listas muito grandes. 
 
O Quicksort é o algoritmo mais eficiente na ordenação por comparação. Nele se 
escolhe um elemento chamado de pivô, a partir disto é organizada a lista para que 
todos os números anteriores a ele sejam menores que ele, e todos os números 
posteriores a ele sejam maiores que ele. Ao final desse processo o número pivô já 
está em sua posição final. Os dois grupos desordenados recursivamente sofreram 
o mesmo processo até que a lista esteja ordenada. 
 
 
 
 
 
 2a Questão 
 
Considere as seguintes afirmações sobre Listas Sequenciais: 
I - São estruturas lineares que utilizam as primeiras posições de um vetor para 
armazenar os dados de interesse. 
II - São compostas pelo conjunto dos dados que se deseja armazenar e por uma 
variável inteira que indica a quantidade de dados armazenados. 
III - Os dados são sempre inseridos ou removidos no final da lista, tomando-se o 
cuidado de atualizar a quantidade de dados da mesma. 
IV - A lista pode admitir ou não admitir que haja dados repetidos (listas podem 
ser com ou sem repetição). 
Marque a opção que contém apenas todas as afirmações verdadeiras: 
 
 
I, II, IV 
 
I, II 
 
I, III, IV 
 
I, II, III, IV 
 
I, II, III 
Respondido em 19/05/2020 21:51:26 
 
 
Explicação: 
Analisando cada afirmativa : 
 
I - São estruturas lineares que utilizam as primeiras posições de um vetor para 
armazenar os dados de interesse. 
Verdadeiro. As inserções vão ocorrendo do início do vetor (índice zero) em 
direção ao fim. 
 
II - São compostas pelo conjunto dos dados que se deseja armazenar e por uma 
variável inteira que indica a quantidade de dados 
armazenados. 
Verdadeiro. Armazenam-se os dados e controla-se a quantidade de dados na lista. 
 
III - Os dados são sempre inseridos ou removidos no final da lista, tomando-se o 
cuidado de atualizar a quantidade de dados 
da mesma. 
Falso. A inserção pode ser no início, no meio ou no final da lista. Na verdade, 
pode ocorrer inserção e remoção em qualquer posição. 
 
IV - A lista pode admitir ou não admitir que haja dados repetidos (listas podem 
ser com ou sem repetição). 
Verdadeiro. Uma lista pode ou não ter dados repetidos. 
 
Resposta certa : As afirmativas I, II, IV estão certas 
 
 
 
 
 3a Questão 
 
 
 
 
for (int i = 0; i < n; i++) 
 cout << L.matricula << " " << L.nome << endl; 
 
for (int i = 0; i < n; i++) 
 cout << L[i].matricula << " " << L[i].nome << endl; 
 
for (int i = 0; i < n; i++) 
 cout << L.matricula[i] << " " << L.nome[i] << endl; 
 
for (int i = 0; i < n; i++) 
 cout << L[i] << endl; 
 
for (int i = 0; i < n; i++) 
 cout << L[i].matricula << " " << L[i].nome[30] << endl; 
Respondido em 19/05/2020 21:51:38 
 
 
Gabarito 
Coment. 
 
 
 
 
 4a Questão 
 
Considere uma lista sequencial L com n fichas de professores, sendo que cada 
ficha de professor é modelada pela struct : 
struct professor { 
int matricula; 
char titulo[30]; 
}; 
e a lista L é assim declarada : professor L[n]; 
 
Assinale o trecho que corretamente exibe todas as matrículas e titulações de todos 
os n professores de L . 
 
 
for (int i = 0; i < n; i++) 
cout << L.matricula << " " << L.titulo << endl; 
 
for (int i = 0; i < n; i++) 
cout << L[i] << endl; 
 
for (int i = 0; i < n; i++) 
cout << L[i].matricula << " " << L[i].titulo[30] << endl; 
 
for (int i = 0; i < n; i++) 
cout << L.matricula[i] << " " << L.titulo[i] << endl; 
 
for (int i = 0; i < n; i++) 
cout << L[i].matricula << " " << L[i].titulo << endl; 
Respondido em 19/05/2020 21:51:46 
 
 
Explicação:Como L é um vetor de n elementos do tipo professor. Então, para percorrer o 
vetor de índice i temos que fazer L[i] seguido do ponto seguido do campo, que 
pode ser matricula ou titulo. 
Assiim, a opção correta é 
for (int i = 0; i < n; i++) 
 cout << L[i].matricula << " " << L[i].titulo << endl; 
 
 
 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881717973&cod_hist_prova=194387549&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881717973&cod_hist_prova=194387549&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881717973&cod_hist_prova=194387549&pag_voltar=otacka
 
 5a Questão 
 
Considere as seguintes afirmações: I. Só podemos ter uma matriz de no máximo 
duas dimensões. Exemplo: C[100][100]. II. Ao declararmos um vetor int A[10], 
se escrevemos A[2] acessamos o segundo elemento do vetor. III. Uma string 
declarada como char B[30] armazena no máximo 30 caracteres. Escolha a 
alternativa correta: 
 
 
Está correta apenas a afirmativa I. 
 
Estão corretas apenas as afirmativas I e III. 
 
Está correta apenas a afirmativa II. 
 
Nenhuma afirmação está correta. 
 
Estão corretas apenas as afirmativas I e II. 
Respondido em 19/05/2020 21:51:53 
 
 
Explicação: 
Analisando cada afirmativa : 
 I. Só podemos ter uma matriz de no máximo duas dimensões. Exemplo: 
C[100][100]. 
 Falso. Podemos ter matrizes unidimensionais, tridimensionais, etc... 
 II. Ao declararmos um vetor int A[10], se escrevemos A[2] acessamos o segundo 
elemento do vetor. 
Falso. Em C++ o índice inicial é zero. Logo, A[2] é o elemento de índice 2, ou 
seja, o 3o. elemento do vetor. 
III. Uma string declarada como char B[30] armazena no máximo 30 caracteres. 
Escolha a alternativa correta: 
Falso. B pode armazenar no máximo 29 caracteres que sejam dados, pois existe 
uma área para o caracter nulo. 
Logo, todas as opções são falsas. 
 
 
 
 
 6a Questão 
 
Considere uma lista com n livros, em que cada livro é modelado pela 
struct : 
 
struct Livro { 
 string titulo, editora, autor; 
 float preco; 
}; 
 
A função X abaixo 
 
void X (Livro v[ ], int &n, Livro L) 
{ 
 v[n] = L; 
 n++; 
 cout << "Operação realizada com sucesso."; 
} 
 
implementa a operação de : 
 
 
Busca 
 
Substituição 
 
Inserção 
 
Inicialização 
 
Ordenação por inserção 
Respondido em 19/05/2020 21:52:15 
 
 
Gabarito 
Coment. 
 
 
 
 
 7a Questão 
 
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 é: 
 
 
Matriz 
 
Variável 
 
Função 
 
Vetor 
 
Registro 
Respondido em 19/05/2020 21:52:02 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881717973&cod_hist_prova=194387549&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881717973&cod_hist_prova=194387549&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881717973&cod_hist_prova=194387549&pag_voltar=otacka
 
 
Gabarito 
Coment. 
 
 
 
 
 8a Questão 
 
As estruturas de dados são utilizadas para manter dados ou informações 
organizados na memória, o que possibilita a otimização do uso destes dados. 
Porém, as estruturas guardam características especiais na manipulação destes 
dados, assim deve-se escolher a estrutura certa ou mais adequada para uma 
determinada aplicação. Portanto marque a opção que representa a melhor estrutura, 
quando se tem como requisitos principais o acesso aleatório aos dados e alocação 
destes de forma contínua na memória. 
 
 
Pilha Encadeada 
 
Lista Sequencial 
 
Pilha Sequencial 
 
Fila Sequencial 
 
Lista Encadeada 
 
1a Questão 
 
Considere uma lista com n livros, em que cada livro é modelado pela 
struct : 
 
struct Livro { 
 string titulo, editora, autor; 
 float preco; 
}; 
 
A função X abaixo 
 
void X (Livro v[ ], int &n, Livro L) 
{ 
 v[n] = L; 
 n++; 
 cout << "Operação realizada com sucesso."; 
} 
 
implementa a operação de : 
 
 
Inserção 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881717973&cod_hist_prova=194387549&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881717973&cod_hist_prova=194387549&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881717973&cod_hist_prova=194387549&pag_voltar=otacka
 
Inicialização 
 
Busca 
 
Substituição 
 
Ordenação por inserção 
Respondido em 19/05/2020 22:04:56 
 
 
Gabarito 
Coment. 
 
 
 
 
 2a Questão 
 
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 é: 
 
 
Função 
 
Variável 
 
Vetor 
 
Registro 
 
Matriz 
Respondido em 19/05/2020 22:04:58 
 
 
Gabarito 
Coment. 
 
 
 
 
 3a Questão 
 
Considere as seguintes afirmações: I. Só podemos ter uma matriz de no máximo 
duas dimensões. Exemplo: C[100][100]. II. Ao declararmos um vetor int A[10], 
se escrevemos A[2] acessamos o segundo elemento do vetor. III. Uma string 
declarada como char B[30] armazena no máximo 30 caracteres. Escolha a 
alternativa correta: 
 
 
Estão corretas apenas as afirmativas I e III. 
 
Está correta apenas a afirmativa I. 
 
Está correta apenas a afirmativa II. 
 
Estão corretas apenas as afirmativas I e II. 
 
Nenhuma afirmação está correta. 
Respondido em 19/05/2020 22:04:58 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881801894&cod_hist_prova=194392271&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881801894&cod_hist_prova=194392271&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881801894&cod_hist_prova=194392271&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881801894&cod_hist_prova=194392271&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881801894&cod_hist_prova=194392271&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881801894&cod_hist_prova=194392271&pag_voltar=otacka
 
 
Explicação: 
Analisando cada afirmativa : 
 I. Só podemos ter uma matriz de no máximo duas dimensões. Exemplo: 
C[100][100]. 
 Falso. Podemos ter matrizes unidimensionais, tridimensionais, etc... 
 II. Ao declararmos um vetor int A[10], se escrevemos A[2] acessamos o segundo 
elemento do vetor. 
Falso. Em C++ o índice inicial é zero. Logo, A[2] é o elemento de índice 2, ou 
seja, o 3o. elemento do vetor. 
III. Uma string declarada como char B[30] armazena no máximo 30 caracteres. 
Escolha a alternativa correta: 
Falso. B pode armazenar no máximo 29 caracteres que sejam dados, pois existe 
uma área para o caracter nulo. 
Logo, todas as opções são falsas. 
 
 
 
 
 4a Questão 
 
Considere uma lista sequencial L com n fichas de professores, sendo que cada 
ficha de professor é modelada pela struct : 
struct professor { 
int matricula; 
char titulo[30]; 
}; 
e a lista L é assim declarada : professor L[n]; 
 
Assinale o trecho que corretamente exibe todas as matrículas e titulações de todos 
os n professores de L . 
 
 
for (int i = 0; i < n; i++) 
cout << L[i].matricula << " " << L[i].titulo << endl; 
 
for (int i = 0; i < n; i++) 
cout << L[i] << endl; 
 
for (int i = 0; i < n; i++) 
cout << L.matricula[i] << " " << L.titulo[i] << endl;for (int i = 0; i < n; i++) 
cout << L.matricula << " " << L.titulo << endl; 
 
for (int i = 0; i < n; i++) 
cout << L[i].matricula << " " << L[i].titulo[30] << endl; 
Respondido em 19/05/2020 22:05:19 
 
 
Explicação: 
Como L é um vetor de n elementos do tipo professor. Então, para percorrer o 
vetor de índice i temos que fazer L[i] seguido do ponto seguido do campo, que 
pode ser matricula ou titulo. 
Assiim, a opção correta é 
for (int i = 0; i < n; i++) 
 cout << L[i].matricula << " " << L[i].titulo << endl; 
 
 
 
 
 5a Questão 
 
As estruturas de dados são utilizadas para manter dados ou informações 
organizados na memória, o que possibilita a otimização do uso destes dados. 
Porém, as estruturas guardam características especiais na manipulação destes 
dados, assim deve-se escolher a estrutura certa ou mais adequada para uma 
determinada aplicação. Portanto marque a opção que representa a melhor estrutura, 
quando se tem como requisitos principais o acesso aleatório aos dados e alocação 
destes de forma contínua na memória. 
 
 
Pilha Sequencial 
 
Pilha Encadeada 
 
Lista Encadeada 
 
Fila Sequencial 
 
Lista Sequencial 
Respondido em 19/05/2020 22:05:28 
 
 
Gabarito 
Coment. 
 
 
 
 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881801894&cod_hist_prova=194392271&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881801894&cod_hist_prova=194392271&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881801894&cod_hist_prova=194392271&pag_voltar=otacka
 6a Questão 
 
São métodos ou algoritmos conhecidos de ordenação de dados por troca: 
 
 
busca por ordenação e ordenação shell. 
 
hashing e bubble sort. 
 
quicksort e hashing. 
 
ordenação shell e hashing. 
 
bubble sort e quicksort. 
Respondido em 19/05/2020 22:05:10 
 
 
Explicação: 
Bubble sort é o algoritmo mais simples, mas o menos eficientes. Neste algoritmo 
cada elemento da posição i será comparado com o elemento da posição i + 1, ou 
seja, um elemento da posição 2 será comparado com o elemento da posição 3. 
Caso o elemento da posição 2 for maior que o da posição 3, eles trocam de lugar e 
assim sucessivamente. Por causa dessa forma de execução, o vetor terá que ser 
percorrido quantas vezes que for necessária, tornando o algoritmo ineficiente para 
listas muito grandes. 
 
O Quicksort é o algoritmo mais eficiente na ordenação por comparação. Nele se 
escolhe um elemento chamado de pivô, a partir disto é organizada a lista para que 
todos os números anteriores a ele sejam menores que ele, e todos os números 
posteriores a ele sejam maiores que ele. Ao final desse processo o número pivô já 
está em sua posição final. Os dois grupos desordenados recursivamente sofreram 
o mesmo processo até que a lista esteja ordenada. 
 
 
 
 
 
 7a Questão 
 
 
 
 
for (int i = 0; i < n; i++) 
 cout << L[i].matricula << " " << L[i].nome[30] << endl; 
 
for (int i = 0; i < n; i++) 
 cout << L.matricula << " " << L.nome << endl; 
 
for (int i = 0; i < n; i++) 
 cout << L.matricula[i] << " " << L.nome[i] << endl; 
 
for (int i = 0; i < n; i++) 
 cout << L[i] << endl; 
 
for (int i = 0; i < n; i++) 
 cout << L[i].matricula << " " << L[i].nome << endl; 
Respondido em 19/05/2020 22:05:15 
 
 
Gabarito 
Coment. 
 
 
 
 
 8a Questão 
 
Estude atentamente o código a segir: 
int deciframe(int v[ ], int tam, int e){ 
int i = 0, f = tam -1, m; 
while ( i <= f ){ 
m = ( i + f ) / 2; 
if ( v[m] == e ) { return m; } 
if ( e < v[m] ) { f = m - 1; } 
else { i = m + 1; } 
} 
return -1; 
} 
Sabendo que a chamada da mesma foi feita com os parâmetros recebendo os 
seguintes valores, o que ela retornaria? 
v[10] = {0, 2, 4, 6, 8, 10, 20, 100} 
tam = 8 
e = -6 
 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881801894&cod_hist_prova=194392271&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881801894&cod_hist_prova=194392271&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881801894&cod_hist_prova=194392271&pag_voltar=otacka
 
6 
 
3 
 
0 
 
-1 
 
4 
Respondido em 19/05/2020 22:05:22 
 
 
Explicação: 
Analisando 
int deciframe(int v[ ], int tam, int e) { 
int i = 0, f = tam -1, m; 
while ( i <= f ){ 
 m = ( i + f ) / 2; 
 if ( v[m] == e ) { return m; } 
 if ( e < v[m] ) 
 { f = m - 1; } 
 else 
 { i = m + 1; } 
} 
return -1; 
} 
 
Sabendo que a chamada da mesma foi feita com os parâmetros recebendo os 
seguintes valores, o que ela retornaria? 
v[10] = {0, 2, 4, 6, 8, 10, 20, 100} 
tam = 8 
e = -6 
Está procurando pelo valor e = -6. Como se sabe pelo estudo da busca binária e 
olhando o código dado, temos que -6 não existe na lista então a função irá 
retornar -1 (vide última linha da função). SE a busca tivesse sucesso, o teste do 
1o. if no while seria verdadeiro e então o índice m de v seria retornado. Mas não é 
o caso, pois -6 não foi encontrado. 
 
 
1a Questão 
 
Para uma aplicação em que deseja-se recuperar a ordem reversa de 
armazenamento dos dados em um vetor, a estrutura de dados mais apropriada a 
ser utilizada na implementação da aplicação é: 
 
 
Grafo 
 
Fila 
 
Árvore 
 
Pilha 
 
Lista 
Respondido em 19/05/2020 21:52:23 
 
 
Explicação: 
Pilha é uma estrutura de dados linear que segue a lógica LIFO, em que o último a 
entrar será o primeiro a sair. Portanto, trabalha com a ordem reversa. 
Fila : segue a lógica FIFO. Trabalha na ordem direta. 
Lista : insere-se e retira-se de qualquer posição. 
Árvore e grafo : estrutura de dados não lineares. 
 
 
 
 
 2a Questão 
 
As estruturas de dados devem ser especificadas de modo que 
estas auxiliem as aplicações em sua principal tarefa ou 
funcionalidade. Sendo assim, pode-se desenvolver uma 
aplicação capaz de fazer a conversão de números da base 10, 
para a base binária, octal ou hexadecimal a partir de um 
algoritmo de divisões sucessivas. Este algoritmo baseia na 
divisão de um número decimal pela base que se deseja a 
transformação, armazenando o resto da divisão em uma 
estrutura de dados, efetuando nova divisão no resultado obtido 
da divisão prévia, novamente armazenando o resto desta 
operação na estrutura de dados e assim por diante até que o 
resultado da divisão seja zero. Neste momento, a estrutura 
possui exatamente, na ordem reversa, os algarismos 
correspondentes ao número convertido para a nova base. 
Analisando esta estratégia poder-se-ia dizer que a estrutura de 
dados mais propícia para tal tarefa é : 
 
 
Fila 
 
Grafo 
 
Pilha 
 
Árvore 
 
Lista 
Respondido em 19/05/2020 21:52:29 
 
 
Gabarito 
Coment. 
 
 
 
 
 3a Questão 
 
Respeitando as ordens de inserção e de retirada dos dados, uma estrutura de: 
 
 
pilha é também denominada LIFO ou FILO. 
 
fila é também denominada FIFO ou LIFO. 
 
fila é também denominada LIFO ou LILO. 
 
pilha é também denominada FIFO ou FILO. 
 
fila é também denominada FIFO ou FILO. 
Respondido em 19/05/2020 21:52:50 
 
 
Gabarito 
Coment. 
 
 
 
 
 4a Questão 
 
Em termos da estrutura de dados do tipo PILHA, a sequência de ações 
empilha(10), empilha(3), empilha(5), empilha(8), desempilha(), desempilha(), 
empilha(20), promoveria a configuração da estrutura a partir do topo : 
 
 
20 10 3 
 
10 3 5 8 
 
20 3 10 
 
5 8 20 
 
20 3 5 8 
Respondido em 19/05/2020 21:52:54 
 
 
Explicação: 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881724619&cod_hist_prova=194387900&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881724619&cod_hist_prova=194387900&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881724619&cod_hist_prova=194387900&pag_voltar=otackahttp://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881724619&cod_hist_prova=194387900&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881724619&cod_hist_prova=194387900&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881724619&cod_hist_prova=194387900&pag_voltar=otacka
 
Ao empilharmos 10, 3, 5 e 8 temos a seguinte sequência 10 3 5 8, onde 8 está no 
topo da pilha e 10 foi o primeiro valor empilhado. 
Ao ser executado desempilha(), o valor 8 é retirado da pilha, ficando o valor 5 no 
topo da pilha. 
Ao ser executado mais um desempilha(), o valor 5 é retirado da pilha, ficando o 3 
no topo da pilha. 
Depois, a ser executado empilha(20), a pilha fica com a seguinte configuração : 
10 3 20, onde 20 está no topo da pilha. 
 
Para dar a sequência a partir do topo para baixo : 20 3 10 
 
 
 
 
 5a Questão 
 
 Ao treinar macacos, foi realizado um jogo para avaliar sua memória. O 
cientista fornecia sequências de cartas com figuras geométricas e o macaco 
devia reproduzir a sequência inversa usando figuras geométricas reais. Qual a 
estrutura de dados mais adequada para modelar esse jogo ? 
 
 
fila 
 
grafo 
 
árvore 
 
lista 
 
pilha 
Respondido em 19/05/2020 21:53:04 
 
 
Explicação: 
O problema mostra um relacionamento linear e uma ordem específica de inserção 
e remoção, que segue a lógica LIFO (último a entrar será o primeiro a sair). 
 
 
pilha 
Correto. O último a entrar na pilha será o útimo a sair da 
mesma. 
 
fila 
Falso. SEgue a lógica FIFO, onde o primeiro a entrar será o 
primeiro a sair. 
 
árvore 
Falso. É uma esrutura de dados não linear. 
 
lista 
Falso. Podemos inserir e retirar de qualquer posição. 
 
grafo 
FAlso. Estrutura de dados não linear. 
 
 
 
 
 6a Questão 
 
As pilhas sequenciais são estruturas que guardam a ordem reversa dos dados 
nelas armazenados, e isto em muitas ocasiões é muito vantajoso. A operação 
usada para inserir um elemento X numa pilha é conhecida na literatura como 
PUSH (X). Para remover um elemento de uma pilha a operação é o POP( ). 
Assim estas duas funções devem implentar o algoritmo LIFO (Last In - First 
Out ) ou o último a entrar é o primeiro a sair. Sendo assim se aplicarmos as 
seguintes operações em uma PILHA vazia: 
PUSH(10),PUSH(5),POP(),PUSH(7),POP(),PUSH(2),POP(),POP( ). 
Quais valores restarão na pilha? 
 
 
Nenhum, a pilha estará vazia. 
 
Apenas o 10 
 
10 e 2 
 
7 e 2 
 
Apenas o 2 
Respondido em 19/05/2020 21:52:53 
 
 
Explicação: 
Empilhando e Desempilhando 
PUSH(10),PUSH(5),POP(),PUSH(7),POP(),PUSH(2),POP(),POP( ). 
10 PUSH(10) 
5 10 PUSH(5), PUSH(10) 
10 POP() PUSH(10) 
7 10 PUSH(7) PUSH(10) 
10 POP() PUSH(10) 
2 10 PUSH(11)PUSH(10) 
10 POP() PUSH(10) 
 POP() VAZIA Resposta CORRETA 
 
Gabarito 
Coment. 
 
 
 
 
 7a Questão 
 
Um dos conceitos muito úteis na ciência da computação é a estrutura de dados 
chamada pilha. Uma pilha é um conjunto________ de itens, no qual novos itens 
podem ser inseridos no(a) ________ e itens podem ser retirados do(a)________ 
da pilha, por meio das operações________ e _________, respectivamente. 
Assinale a alternativa que completa corretamente as lacunas. 
 
 
desordenado - base - topo - down - up 
 
ordenado - final - início - up - down 
 
ordenado - topo - topo - pop ou desempilhar - push ou empilhar 
 
ordenado - topo - topo - empilhar ou push - desempilhar ou pop 
 
desordenado - topo - base - push ou empilhar - pop ou desempilhar 
Respondido em 19/05/2020 21:52:59 
 
 
Explicação: 
Por definição, pilha é uma estrutura de dados ordenada em que as inserções e 
remoções seguem a lógica LIFO, em que o útimo a entrar na pilha será o primeiro 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881724619&cod_hist_prova=194387900&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881724619&cod_hist_prova=194387900&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881724619&cod_hist_prova=194387900&pag_voltar=otacka
a sair da mesma. Insere-se no topo (empilhar ou push) e retira-se do topo 
(desempilhar ou pop) . 
 
 
 
 
 8a Questão 
 
Quando as inserções e as remoções ocorrem sempre no mesmo lado da lista, trata-
se de uma estrutura de dados denominada 
 
 
Lista Encadeada 
 
Lista Circular 
 
Pilha 
 
Vetor 
 
Fila 
Respondido em 19/05/2020 21:53:23 
 
 
Explicação: 
Por definição, na estrutura de dados pilha, insere-se em uma extremidade e retira-
se da mesma extremidade, pois a lógica que rege tal estrutura de dados é a lógica 
LIFO. 
 
 
 
1a Questão 
 
Na estrutura de dados tipo pilha, há duas operações básicas para empilhamento e 
desempilhamento. Essas operações são conhecidas como: 
 
 
Base e Topo; 
 
PULL e POP; 
 
HEAP e POP; 
 
PUSH e PULL; 
 
PUSH e POP. 
Respondido em 19/05/2020 21:54:09 
 
 
Gabarito 
Coment. 
 
 
 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881731391&cod_hist_prova=194388279&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881731391&cod_hist_prova=194388279&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881731391&cod_hist_prova=194388279&pag_voltar=otacka
 
 2a Questão 
 
Sobre as pilhas, marque a alternativa correta: 
 
 
Pilhas são estruturas de dados do tipo FIFO e permitem que os dados sejam 
manipulados diretamente no meio da estrutura. 
 
A característica principal que define uma Pilha diz respeito às operações de 
inserção e remoção, que devem ser realizadas exclusivamente na mesma 
extremidade. 
 
Pilhas são menos restritivas do que Listas, pois esta última impõe mais 
restrições às operações de inserção/remoção do que as primeiras. 
 
A operação de desempilhar um item de uma pilha e logo em seguida 
empilha-lo em outra pilha mantem a mesma ordem dos dados da primeira 
pilha na segunda pilha. 
 
Pilhas não podem ser implementadas usando vetores, pois não será 
possível reproduzir a inserção e remoção pela mesma extremidade. 
Respondido em 19/05/2020 21:53:42 
 
 
Explicação: 
Analisando cada item. 
 
 
Pilhas são estruturas de dados do tipo FIFO e permitem que 
os dados sejam manipulados diretamente no meio da 
estrutura. 
Falso. Pilha segue a lógica LIFO e as operações de inserção e 
remoção ocorrem apenas em uma extremidade, o topo da 
pilha 
 
A operação de desempilhar um item de uma pilha e logo 
em seguida empilhá-lo em outra pilha mantém a mesma 
ordem dos dados da primeira pilha na segunda pilha. 
FAlso. Por exemplo, o elemento do topo da primeira pilha, será 
o 1o. elemento empilhado na 2a. pilha. 
 
Pilhas não podem ser implementadas usando vetores, pois 
não será possível reproduzir a inserção e remoção pela 
mesma extremidade. 
Falso. É possível usar vetor ou lista encadeada para 
implementar pilha. 
 
Pilhas são menos restritivas do que Listas, pois esta última 
impõe mais restrições às operações de inserção/remoção 
do que as primeiras. 
FAlso. Em uma lista podemos inserir ou retirar de qualquer 
posição. Em pilha, não. 
 
A característica principal que define uma Pilha diz respeito 
às operações de inserção e remoção, que devem ser 
realizadas exclusivamente na mesma extremidade. 
Vedadeiro. 
 
 
 
 
 
 3a Questão 
 
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? 
 
 
TABLE 
 
LIFO 
 
ARRAY 
 
RECORD 
 
FIFO 
Respondido em 19/05/2020 21:53:56Gabarito 
Coment. 
 
 
 
 
 4a Questão 
 
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 ? 
 
 
fila 
 
árvore 
 
pilha 
 
grafo 
 
lista 
Respondido em 19/05/2020 21:53:33 
 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881731391&cod_hist_prova=194388279&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881731391&cod_hist_prova=194388279&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881731391&cod_hist_prova=194388279&pag_voltar=otacka
 
Gabarito 
Coment. 
 
 
 
 
 5a Questão 
 
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(topo != -1) topo--;} 
 
void pop(){ if(pilha != -1) pilha[topo];} 
 
void pop(){ if(topo != -1) pilha[topo-1];} 
 
void pop(){ if(topo != -1) topo++;} 
 
void pop(){ if(pilha != -1) pilha[topo-1];} 
Respondido em 19/05/2020 21:54:02 
 
 
Gabarito 
Coment. 
 
 
 
 
 6a Questão 
 
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. 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881731391&cod_hist_prova=194388279&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881731391&cod_hist_prova=194388279&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881731391&cod_hist_prova=194388279&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881731391&cod_hist_prova=194388279&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881731391&cod_hist_prova=194388279&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881731391&cod_hist_prova=194388279&pag_voltar=otacka
 
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 e II estão corretas 
 
I , III e V estão corretas 
 
I, II e IV estão corretas 
 
I e III estão corretas 
Respondido em 19/05/2020 21:53:40 
 
 
Gabarito 
Coment. 
 
 
 
 
 7a Questão 
 
A estrutura de dados que segue a lógica LIFO (Last in First Out) é denominada : 
 
 
Lista duplamente encadeada 
 
Árvore 
 
Fila 
 
Vetor 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881731391&cod_hist_prova=194388279&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881731391&cod_hist_prova=194388279&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881731391&cod_hist_prova=194388279&pag_voltar=otacka
 
Pilha 
Respondido em 19/05/2020 21:54:09 
 
 
Explicação: 
Por definição, pilha é uma estrutura de dados que segue a lógica LIFO, em que o 
último a entrar será o primeiro a sair. 
 
 
 
 
 8a Questão 
 
Considere dados sendo manipulados em uma pilha sequencial em que as operações 
possíveis são: inserção - push(novo valor) ou remoção - pop(). 
 
Se realizarmos a seguinte sequencia de operações: 
 
push(A),push(B),push(C),pop(),pop(),push(D),pop(),pop(). 
 
Pode-se dizer que o interior da pilha apresenta-se: 
 
 
Apenas com o dado A 
 
Com os dados A e B 
 
Vazio 
 
Com os dados A e D 
 
Apenas com o dado D 
Respondido em 19/05/2020 21:53:47 
 
1a Questão 
 
Pilha é uma estrutura de dados 
 
 
Cujo acesso aos seus elementos segue a lógica LIFO. 
 
Cujo acesso aos seus elementos segue tanto a lógica LIFO quanto a FIFO. 
 
Que pode ser implementada somente por meio de vetores. 
 
Cujo acesso aos seus elementos ocorre de forma aleatória. 
 
Que pode ser implementada somente por meio de listas. 
Respondido em 19/05/2020 21:54:37 
 
 
Explicação: 
Pilha é uma lista que segue a lógica LIFO para inserções e remoções. Pode ser 
implementada com vetores ou listas encadeadas. 
Fila é uma lista que segue a lógica FIFO. 
 
 
Gabarito 
Coment. 
 
 
 
 
 2a Questão 
 
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, II e V estão corretas. 
 
I e II estão corretas. 
 
I e IV estão corretas. 
Respondido em 19/05/2020 21:54:55 
 
 
Gabarito 
Coment. 
 
 
 
 
 3a Questão 
 
No contexto de estrutura de dados, uma pilha é: 
 
 
um tipo de lista linear em que as operações de inserção e remoção são 
realizadas aleatoriamente. 
 
uma lista do tipo LILO. 
 
um tipo de lista linear em que as operações de inserção e remoção são 
realizadas na extremidade denominada topo. 
 
uma lista do tipo FIFO. 
 
um tipo de lista linear em que as operações de inserção são realizadas em 
uma extremidade e as operações de remoção são realizadas em outra 
extremidade. 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881737512&cod_hist_prova=194388657&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881737512&cod_hist_prova=194388657&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881737512&cod_hist_prova=194388657&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881737512&cod_hist_prova=194388657&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881737512&cod_hist_prova=194388657&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881737512&cod_hist_prova=194388657&pag_voltar=otacka
Respondido em 19/05/2020 21:54:40 
 
 
Explicação: 
Por definição, pilha é uma lista linear ordenada em que as inserções e remoções 
seguem a lógica LIFO. As inserções e remoções ocorrem em uma só extremidade, 
que podemos chamar de topo. 
 
 
Gabarito 
Coment. 
 
 
 
 
 4a Questão 
 
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. 
 
O último item inserido é o primeiro item a ser retirado. 
 
Os acessos aos itens ocorremde forma aleatória. 
 
O último item inserido é o último item a ser retirado. 
Respondido em 19/05/2020 21:54:59 
 
 
Explicação: 
A estrutura de dados Pilha faz uso da lógica LIFO (last-in first-out), isto é, o último 
elemento a entrar é o primeiro a sair. 
Essa estrutura pode ser usada com alocação estática (com vetor) e com alocação 
dinâmica (listas encadeadas). 
Sempre que pedir para explicar essa estrutura, não deixe de falar sobre a lógica 
usada. 
 
Gabarito 
Coment. 
 
 
 
 
 5a Questão 
 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881737512&cod_hist_prova=194388657&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881737512&cod_hist_prova=194388657&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881737512&cod_hist_prova=194388657&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881737512&cod_hist_prova=194388657&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881737512&cod_hist_prova=194388657&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881737512&cod_hist_prova=194388657&pag_voltar=otacka
O que acontece quando tentamos retirar um elemento de uma pilha que já está 
vazia? 
 
 
Ordenação. 
 
Remoção. 
 
Inclusão. 
 
Overflow. 
 
Underflow. 
Respondido em 19/05/2020 21:54:45 
 
 
Explicação: 
Por definição, a respota certa é underflow. 
Usa-se overflow quando a pilha está cheia e tentamos inserir 
 
 
Gabarito 
Coment. 
 
 
 
 
 6a Questão 
 
 
 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. 
 
 
grafo 
 
pilha 
 
árvore 
 
fila 
 
lista 
Respondido em 19/05/2020 21:54:30 
 
 
Gabarito 
Coment. 
 
 
 
 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881737512&cod_hist_prova=194388657&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881737512&cod_hist_prova=194388657&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881737512&cod_hist_prova=194388657&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881737512&cod_hist_prova=194388657&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881737512&cod_hist_prova=194388657&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881737512&cod_hist_prova=194388657&pag_voltar=otacka
 7a Questão 
 
A estrutura de dados do tipo pilha (stack) é um tipo abstrato de dado baseada no 
princípio: 
 
 
De dividir para conquistar. 
 
Da localidade de referência. 
 
First In First Out (FIFO). 
 
Da indiferença. 
 
Last In First Out (LIFO). 
Respondido em 19/05/2020 21:54:47 
 
 
Explicação: 
A lógica da Pilha é: o último a entrar é o primeiro a sair logo, Last (último) 
In (dentro) First (primeiro) Out (fora) -> LIFO. 
 
Gabarito 
Coment. 
 
 
 
 
 8a Questão 
 
Inseriu-se em uma pilha os valores A,B,C e D, seguindo essa ordem. Se logo após 
são executadas duas operações de remoção, pode-se dizer que: 
 
 
Os valores removidos serão A e B, nessa ordem 
 
Nenhuma das alternativas anteriores 
 
A resposta depende da chave de busca, pois a remoção depende da chave 
fornecida 
 
Os valores removidos serão D e C, nessa ordem 
 
Os valores removidos serão C e D, nessa ordem 
Respondido em 19/05/2020 21:54:49 
 
 
Explicação: 
Inseriu-se em uma pilha os valores A,B,C e D, seguindo essa ordem. 
Analisando .... Daí temos que A está na posição 0, B na posição 1, C na 
posição 2 e D na posição 3, ficando no topo da pilha. 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881737512&cod_hist_prova=194388657&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881737512&cod_hist_prova=194388657&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881737512&cod_hist_prova=194388657&pag_voltar=otacka
Se logo após são executadas duas operações de remoção 
Analisando .... Daí temos será removido primeiro o D, que está no topo da 
pilha e depois será removido o C, que terá ficado no topo logo após a saída 
do D. 
Logo, saem D e C, nesta ordem. 
 
1a Questão 
 
Seja Q uma estrutura de dados do tipo fila, em que ENQUEUE(X) significa a 
adição do elemento X à Q e que DEQUEUE(), a retirada de um elemento. Q está 
inicialmente vazia e sofre a seguinte sequencia de operações: 
ENQUEUE(1) 
ENQUEUE(2) 
DEQUEUE() 
ENQUEUE(3) 
ENQUEUE(4) 
DEQUEUE() 
DEQUEUE() 
ENQUEUE(5) 
Ao final da sequencia, a soma dos elementos de que (Q) será? 
 
 
5 
 
15 
 
9 
 
0 
 
6 
Respondido em 19/05/2020 21:55:18 
 
 
Gabarito 
Coment. 
 
 
 
 
 2a Questão 
 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881739702&cod_hist_prova=194388867&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881739702&cod_hist_prova=194388867&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881739702&cod_hist_prova=194388867&pag_voltar=otacka
Considere uma fila simples F de inteiros, do tipo Fila definido abaixo. Tal fila deverá armazenar 
códigos de agentes de uma firma de espionagem, desde que haja espaço para um novo agente. 
Assinale a opção que corretamente enfileira o código de um agente, sabendo que a fila F foi 
inicializada de acordo com o trecho de código abaixo. 
struct Fila { in t v[100], inicio, fim; } ; 
Fila F; 
F. inicio = 0; 
F.fim = -1; 
 
 
 
 
void enfileirar(Fila F, int codigo) { 
 if (F.fim == 100) 
 cout << "Não há espaço na firma para mais agentes. " << endl; 
 else { 
 F.fim++; 
 F.v[F.fim] = codigo; 
 } 
} 
 
 
void enfileirar(Fila &F, int codigo) { 
 if (F.fim == 99) 
 cout << "Não há espaço na firma para mais agentes. " << endl; 
 else 
 F.fim++; 
 F.v[F.fim] = codigo; 
} 
 
 
 
void enfileirar(Fila &F, int codigo) { 
 if (F.fim == 99) 
 cout << "Não há espaço na firma para mais agentes. " << endl; 
 else { 
 F.fim++; 
 F.v[F.fim] = codigo; 
 } 
} 
 
 
 
void enfileirar(Fila &F, int codigo) { 
 F.v[F.fim] = codigo; 
 F.fim++; 
} 
 
void enfileirar(Fila F, int codigo) { 
 F.fim++; 
 F.v[F.fim] = codigo; 
} 
 
Respondido em 19/05/2020 21:55:26 
 
 
Gabarito 
Coment. 
 
 
 
 
 3a Questão 
 
Sobre pilhas, lista e filas, considere as afirmativas a seguir. I. As estruturas de 
dados pilhas, filas e listas armazenam coleções de itens. A característica que as 
distinguem é a ordem em que podem ser retirados os itens dessas coleções e a 
ordem em que foram inseridos. II. Considere que os itens A, B, C, D, E foram 
inseridos nessa ordem em uma fila. Necessariamente, o primeiro elemento a ser 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881739702&cod_hist_prova=194388867&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881739702&cod_hist_prova=194388867&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881739702&cod_hist_prova=194388867&pag_voltar=otacka
removido dessa fila é o elemento A. III. Considere que os itens A,B, C, D, E 
foram inseridos nessa ordem em uma pilha. Necessariamente, o último elemento a 
ser removido dessa pilha é o elemento E. IV. Considere que os itens A, B, C, D, E 
foram inseridos nessa ordem em uma lista. Necessariamente, o primeiro elemento 
a ser removido dessa lista é o elemento A. 
 
 
Somente as afirmativas I e IV são corretas. 
 
Todas as afirmativas estão corretas 
 
Somente as afirmativas I, II e III são corretas. 
 
Somente as afirmativas III e IV são corretas. 
 
Somente as afirmativas I e II são corretas. 
Respondido em 19/05/2020 21:55:31 
 
 
Explicação: 
Analisando cad afirmativa: 
 I. As estruturas de dados pilhas, filas e listas armazenam coleções de itens. A 
característica que as distinguem é a ordem em que podem ser retirados os itens 
dessas coleções e a ordem em que foram inseridos. 
>>>>>Verdadeira. A pilha segue a lógica LIFO, fila segue a lógica FIFO e em 
uma lista insere-se e retira-se de qualquer posição. 
II. Considere que os itens A, B, C, D, E foram inseridos nessa ordem em uma fila. 
Necessariamente, o primeiro elemento a ser removido dessa fila é o elemento A. 
>>>>> Verdadeira. O 1o. a entrar, será o 1o. a sair. 
III. Considere que os itens A, B, C, D, E foram inseridos nessa ordem em uma 
pilha. Necessariamente, o último elemento a ser removido dessa pilha é o 
elemento E. 
>>>>> FAlso. O último a entrar foi o E, portanto, pela lógica LIFO é o primeiro 
a sair. 
IV. Considere que os itens A, B, C, D, E foram inseridos nessa ordem em uma 
lista. Necessariamente, o primeiro elemento a ser removido dessa lista é o 
elemento A. 
>>>> Falso. Em uma lista insere-se em qualquer posição e retira-se de qualquer 
posição. 
Logo, as afirmativa I e II estão corretas. 
 
 
 
 
 4a Questão 
 
IFMT - Técnico em Técnologia da Informação - 2013 
 Considere a função insere(x: inteiro), que recebe como parâmetro um número 
inteiro e o insere em uma Fila, e ainda, a função remove(), que retira um valor de 
uma Fila. 
 Dada a Fila [3-4-6-8-10], executam-se os comandos na ordem: insere(1), 
insere(2), remove(). 
 Após a execução desses comandos, qual será a Fila resultante? 
 
 
[2-3-4-6-8-10] 
 
[3-4-6-8-10] 
 
[4-6-8-10-1-2] 
 
[2-1-3-4-6-8] 
 
[3-4-6-8-10-1] 
Respondido em 19/05/2020 21:55:23 
 
 
Explicação: 
Dada a Fila [3-4-6-8-10], executam-se os comandos na ordem: insere(1), 
insere(2), remove(). ? 
Temos 3-4-6-8-10 e com a 1a. insere teremos 3-4-6-8-10 - 1 
Com a segunda insere teremos 3-4-6-8-10- 1-2 
E quando remover um valor, sairá o 1o. da fila. Então, a fila ficará assim : 4-6-8-
10- 1-2 
 
 
 
 
 5a Questão 
 
 Considere uma fila circular de tamanho 5, contendo os valores A, Z e C. 
Assim, o início está na posição 0 (zero) e o fim na posição 2 (dois). Dica: O 
vetor inicia na posição 0 (zero). Supondo agora que as seguintes operações 
ocorrerão na lista: 
1. D é inserido 
2. H é inserido 
3. Um elemento é deletado 
4. F é inserido 
5. Um elemento é deletado 
Qual os valores de início e fim ao final dessas operações? 
 
 
Início 4 e fim 4 
 
Início 0 e fim 0 
 
inicio 2 e fim 0 
 
Nenhuma das opções 
 
Início 1 e fim 4 
Respondido em 19/05/2020 21:55:45 
 
 
Explicação: 
Inicialmente temos inicio em 0 e fim em 2, sendo A no início e C no fim da fila. 
Ao termos D inserido ->>> A -> Z -> C -> D onde inicio é zero e fim é 3. 
Ao termos H inserido ->>> A -> Z ->C -> D -> H onde inicio é zero e fim é 4 
Ao ser deletado um valor, o A sai. Então Z->C -> D -> H, onde inicio é 1 e fim é 
4. 
Ao termos F inserido : Z->C -> D -> H -> F, onde inicio é 1 e fim é 0 
Ao ser deletado um valor, o Z sai. Então C -> D -> H -> F, onde inicio é 2 e fim é 
0 
 
 
 
 
 6a Questão 
 
Uma fila duplamente terminada, isto é, uma estrutura linear que permite inserir e 
remover de ambos os extremos é chamada de: 
 
 
Boyer-Moore. 
 
Shift-and. 
 
Árvore. 
 
Deque. 
 
Autômato. 
Respondido em 19/05/2020 21:55:55 
 
 
Explicação: 
Em ciência da computação, uma fila duplamente terminada (frequentemente 
abreviada como deque, do inglês double ended queue) é um tipo de dado 
abstrato que generaliza uma fila, para a qual os elementos podem ser adicionados 
ou removidos da frente (cabeça) ou de trás (cauda). Também é chamada de lista 
encadeada cabeça-cauda, apesar de propriamente isto se referir a 
uma implementação de estrutura de dados específica. 
As deques são filas duplamente ligadas, isto é, filas com algum tipo de prioridade. 
Por exemplo, sistemas distribuídos sempre necessitam que algum tipo 
de processamento seja mais rápido, por ser mais prioritário naquele momento, 
deixando outros tipos mais lentos ou em fila de espera, por não requerem tanta 
pressa. Ele pode ser entendido como uma extensão da estrutura de dados Fila. 
A implementação de um deque por alocação estática ou seqüencial é feita por 
meio de um arranjo de dimensão máxima predefinida e de duas variáveis inteiras 
que indicam o topo e a base (head e tail, respectivamente). Da mesma forma que 
ocorre com a fila, o deque deve ser implementado segundo a abordagem circular, 
que confere eficiência à estrutura ao mesmo tempo em que evita o desperdício de 
memória. 
 
 
 
 
 7a Questão 
 
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. 
 
 
Lista simplesmente encadeada 
 
Pilha 
 
Lista Linear 
 
Fila 
 
Fila Circular 
Respondido em 19/05/2020 21:55:54 
 
 
Gabarito 
Coment. 
 
 
 
 
 8a Questão 
 
 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.inicio > F.fim) 
 cout << "Não há agentes para retirar. " << endl; 
 else { 
 cout << "Removido o agente " << F.v[F.inicio]; 
 } 
} 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881739702&cod_hist_prova=194388867&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881739702&cod_hist_prova=194388867&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881739702&cod_hist_prova=194388867&pag_voltar=otacka
 
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.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++; 
 } 
} 
Respondido em 19/05/2020 21:55:46 
 
1a Questão 
 
 As filas sequenciaissã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: 
 
 
pilha sequencial 
 
lista sequencial 
 
lista circular 
 
pilha circular 
 
fila circular 
Respondido em 19/05/2020 21:57:07 
 
 
Gabarito 
Coment. 
 
 
 
 
 2a Questão 
 
Escolha a opção verdadeira : 
 
 
Uma pilha, a depender de sua configuração, pode funcionar como uma fila 
 
Uma estrutura de dados que segue a lógica FIFO equivale a uma estrutura 
de dados que segue a lógica LIFO. 
 
Pilhas e filas não podem ser implementadas através do uso de listas 
encadeads 
 
Em uma estrutura de dados que segue a lógica LIFO, os dados são 
excluídos na ordem inversa em que foram incluídos. 
 
Uma estrutura de dados que segue a lógica FIFO permite inclusões apenas 
no topo da estrutura de dados. 
Respondido em 19/05/2020 21:56:16 
 
 
Explicação: 
Analisando cada opção : 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881747581&cod_hist_prova=194389297&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881747581&cod_hist_prova=194389297&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881747581&cod_hist_prova=194389297&pag_voltar=otacka
 
Uma estrutura de dados que segue a lógica FIFO permite inclusões apenas 
no topo da estrutura de dados. 
Falso. Uma estrutura de dados que segue a lógica FIFO, que é a estrutura de 
dados fila, permite inclusões no fim e retiradas do início. 
 
 
Em uma estrutura de dados que segue a lógica LIFO, os dados são excluídos 
na ordem inversa em que foram incluídos. 
Verdadeiro. O último a entrar, será o 1o. a sair. Então, poderá ser o primeiro 
a ser excluído da pilha. 
 
 
Uma estrutura de dados que segue a lógica FIFO equivale a uma estrutura de 
dados que segue a lógica LIFO. 
FAlso. Pilha segue a lógica LIFO e fila segue a lógica FIFO. 
 
 
Uma pilha, a depender de sua configuração, pode funcionar como uma fila 
FAlso. Pilha segue a lógica LIFO e fila segue a lógica FIFO. 
 
 
Pilhas e filas não podem ser implementadas através do uso de listas 
encadeadas 
Falso. Tais estruturas podem ser implementadas de forma sequencial e de 
forma encadeada. 
 
 
 
 
 3a Questão 
 
Considerando que uma fila seqüencial utiliza dois apontadores para indicar suas 
posições de final e início da estrutura, supondo que a fila foi criada com os 
apontadores apontando para a posição zero do vetor, qual das alternativas a 
seguir pode caracterizar uma fila vazia? 
 
 
Quando o apontador de posição final for igual ao início. 
 
Quando os apontadores de final e início apontarem para zero. 
 
Quando o apontador de final apontar para zero. 
 
Quando o apontador de final menos um (final-1) for igual ao inicio. 
 
Quando o apontador de início apontar para zero. 
Respondido em 19/05/2020 21:56:10 
 
 
Explicação: 
Suponha que nossa fila mora em um vetor fila[0..N-1]. (A natureza dos 
elementos do vetor é irrelevante: eles podem ser inteiros, bytes, ponteiros, 
etc.) Digamos que a parte do vetor ocupada pela fila é 
fila[p..u-1] . 
O primeiro elemento da fila está na posição p e o último na posição u-1. 
A fila está vazia se p == u e cheia se u == N. 
 
 
 
 
 
 
 4a Questão 
 
A estrutura de dados conhecida pela lógica FIFO (First In First Out) é 
denominada : 
 
 
Fila 
 
Árvore 
 
Vetor 
 
Lista circular 
 
Pilha 
Respondido em 19/05/2020 21:56:22 
 
 
Explicação: 
Fila é, por definição, uma lista linear ordenada em que as inserções e remoções 
seguem a lógica FIFO. 
 
 
 
 
 5a Questão 
 
Para organizar o acesso dos processos que demandam recursos do computador 
(uso da CPU, acesso ao disco rígido e a outros dispositivos de Entrada e Saída), o 
Sistema Operacional gerencia essas demandas colocando os processos 
requisitantes em: 
 
 
Structs 
 
Pilhas 
 
Árvores 
 
Listas 
 
Filas 
Respondido em 19/05/2020 21:57:01 
 
 
Explicação: 
Um exemplo de aplicação de fila : fila de processos para CPU. O primeiro 
processo a chegar fará uso da CPU. O mesmo para os dispostivos de I/O. 
 
 
 
 
 6a Questão 
 
Ao inserirmos em uma estrutura de dados do tipo fila sequencial os seguintes 
elementos: A, B, C, D, exatamente nesta ordem. E em seguida realizarmos duas 
operações consecutivas de remoção na fila e imediatamente inserirmos dois 
novos elementos o X e o W. Podedmos afirmar que se realizarmos uma nova 
operação de remoção, o elemento que será removido desta fila sera o: 
 
 
W 
 
C 
 
X 
 
A 
 
D 
Respondido em 19/05/2020 21:56:41 
 
 
Gabarito 
Coment. 
 
 
Gabarito 
Coment. 
 
 
Gabarito 
Coment. 
 
 
 
 
 7a Questão 
 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881747581&cod_hist_prova=194389297&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881747581&cod_hist_prova=194389297&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881747581&cod_hist_prova=194389297&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881747581&cod_hist_prova=194389297&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881747581&cod_hist_prova=194389297&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881747581&cod_hist_prova=194389297&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881747581&cod_hist_prova=194389297&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881747581&cod_hist_prova=194389297&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881747581&cod_hist_prova=194389297&pag_voltar=otacka
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: 
 
 
A estrutra sofrerá do fenômeno chamado esgotamento de memória e logo 
não poderá mais ser utilizada. A solução é o uso da fila circular. 
 
Um vetor não pode ser usado na implementação de uma fila sequencial 
apenas em pilhas sequenciais. 
 
Um vetor é uma estrutura base correta para esta implementação, já que 
está imune a fenômenos como esgotamento de memória. 
 
A estrutra sofrerá do fenômeno esgotamento de memória, mas se os dados 
estiverem ordenados isto não afetará a estrutura. 
 
A estrutura fila não sofre esgotamento de memória, isto ocorre com as 
pilhas já que implementam o algoritmo LIFO. 
Respondido em 19/05/2020 21:56:38 
 
 
Gabarito 
Coment. 
 
 
 
 
 8a Questão 
 
Ao treinar macacos, foi realizado um jogo para avaliar sua memória. O cientista 
fornecia sequências de cartas com figuras geométricas e o macaco devia 
reproduzir a mesma sequência usando figuras geométricas reais. Qual a 
estrutura de dados mais adequada para modelar esse jogo ? 
 
 
lista 
 
árvore 
 
pilha 
 
grafo 
 
fila 
Respondido em 19/05/2020 21:56:34 
 
 
Explicação: 
Fila é baseada na lógica FIFO, o primeiro a entrar será o primeiro a sair da fila. 
Portanto, como as cartas serão retornadas na mesma ordem da entrada, a resposta 
certa é fila. 
Veja porque não podem ser as outras opções: 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881747581&cod_hist_prova=194389297&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881747581&cod_hist_prova=194389297&pag_voltar=otackahttp://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881747581&cod_hist_prova=194389297&pag_voltar=otacka
Não pode ser pilha, pois pilha retorna os valores na ordem inversa à ordem de 
entrada. 
Não pode ser lista porque na lista insere-se ou retira-se de qualquer posição. 
Não pode ser Árvore ou Grafo pois são não lineares e o problema descrito é 
linear. 
 
 
1a Questão 
 
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. 
 
 
FIFO, não-preemptivo. 
 
SJF (Shortest-Job-First), preemptivo. 
 
Circular, não-preemptivo. 
 
Por prioridades, preemptivo. 
 
LIFO, não-preemptivo. 
Respondido em 19/05/2020 21:57:29 
 
 
Explicação: 
O algoritmo de escalonamento FIFO (First in, first out, em português: "O 
primeiro a entrar é o primeiro a sair, sigla PEPS), ou FCFS(First come, first 
served, em português: "O primeiro a chegar é o primeiro a ser servido") é 
conhecido popularmente por Algoritmo de Fila Simples, é uma estrutura de 
dados que apresenta o seguinte critério: O primeiro elemento a ser retirado é o 
primeiro que tiver sido inserido, é 
um algoritmo de escalonamento não preemptivo que entrega 
a CPU os processos pela ordem de chegada. Ele executa o processo como um 
todo do inicio ao fim não interrompendo o processo executado até ser finalizado, 
então quando um novo processo chega e existe um ainda em execução ele vai 
para uma fila de espera. Esta fila de espera nada mais é do que uma fila que 
organiza os processos que chegam até eles serem atendidos pela CPU. 
Neste escalonamento todos os processos tendem a serem atendidos (por isso 
evita o fenômeno do starvation) ao menos que um processo possua um erro ou 
loop infinito. O loop infinito irá parar a máquina, pois com o FIFO não terá como 
dar continuidade a execução dos processos que estão aguardando na fila de 
espera. 
O algoritmo FIFO não garante um tempo de resposta rápido pois é extremamente 
sensível a ordem de chegada de cada processo e dos antecessores (se existirem) e 
se processos que tendem a demorar mais tempo chegarem primeiro o tempo 
médio de espera e o turnaround acabam sendo aumentados. 
 
 
 
 
 2a Questão 
 
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 LIFO de organização de 
dados. 
 
o sistema I, adota o esquema LIFO de organização de dados e o II, o 
esquema FIFO. 
 
o sistema I, adota o esquema FIFO de organização de dados e o II, o 
esquema LIFO. 
 
tanto o sistema I, quanto o II, adotam o esquema vetor de organização de 
dados. 
 
tanto o sistema I, quanto o II, adotam o esquema FIFO de organização de 
dados. 
Respondido em 19/05/2020 21:57:39 
 
 
Explicação: 
Como os dois sistemas usam a ordem de chegada, temos o uso de fila 
caracterizando os 2 sistemas. Como fila segue a lógica FIFO, os 2 sistemas 
seguem esta lógica FIFO. 
Note que LIFO é de pilha, o que não cabe aqui. Na pilha, o último a entrar é o 
primeiro a sair. 
 
 
 
 
 
 3a Questão 
 
Considere uma estrutura de dados, representada pela variável P, com 
procedimentos de inclusão, exclusão e consulta do próximo elemento (e) 
disponível na estrutura, obedecendo às seguintes propriedades: 
 
 Pode-se concluir, então, que P corresponde à seguinte estrutura de dados? 
 
 
STRUCT 
 
PILHA 
 
LISTA 
 
PONTEIRO 
 
CONJUNTO 
Respondido em 19/05/2020 21:57:16 
 
 
Explicação: 
Pela estrutura apresentada verifica-se ser a de uma Pilha. 
 
 
 
 
 4a Questão 
 
Analisando a figura abaixo, marque a alternativa correta que apresenta o tipo de 
estrutura de dados utilizado. 
 
 
 
Struct 
 
Hash 
 
Fila 
 
Matriz 
 
Pilha 
Respondido em 19/05/2020 21:57:42 
 
 
Explicação: 
Na fila insere-se no fim e retira-se do início. 
 
 
 
Gabarito 
Coment. 
 
 
 
 
 5a Questão 
 
 Assinale a opção que, corretamente, mostra exemplos em que a estrutura de dados fila é 
usada, de acordo com o critério de inserções e remoções que rege tal estrutura. 
 
 
Fila de arquivos para impressão e buffer para gravação de dados em fila. 
 
Buffer para gravação de dados em mídia e fila de pessoas para comprar o ticket do 
metrô. 
 
Fila de documentos para xerox e fila de arquivos para impressão. 
 
Fila de pessoas para tirar o visto e fila de pessoas para usar o caixa eletrônico. 
 
Fila de arquivos para impressão e fila de pessoas no caixa de um supermercado. 
Respondido em 19/05/2020 21:58:00 
 
 
Gabarito 
Coment. 
 
 
 
 
 6a Questão 
 
Pode-se citar os seguintes exemplos de aplicação da estrutura fila: Fila de 
arquivos para impressão: 
• Atendimento de processos requisitados a um sistema operacional. 
• Buffer para gravação de dados em mídia. 
• O tratamento do armazenamento das teclas que estão sendo digitadas 
antes da tecla enter ser pressionada. 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881753116&cod_hist_prova=194389672&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881753116&cod_hist_prova=194389672&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881753116&cod_hist_prova=194389672&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881753116&cod_hist_prova=194389672&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881753116&cod_hist_prova=194389672&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881753116&cod_hist_prova=194389672&pag_voltar=otacka
Agora analise as seguintes afirmativas: 
 I- Uma fila guarda a ordem direta em que os elementos foram armazenados. 
 II- Uma fila guarda a ordem reversa em que os elementos foram armazenados. 
 III- O algoritmo que é implementado em uma fila é baseao no princípio: " O 
último a entrar é o primeiro a sair". 
IV- O algoritmo que é implementado em uma fila é baseao no princípio: " O 
primeiro a entrar é o primeiro a sair". 
 Marque a alternativa correta: 
 
 
I e III estão corretas 
 
Apenas a IV está correta 
 
II e Iv estão corretas 
 
I e IV estão corretas 
 
II e III estão corretas 
Respondido em 19/05/2020 21:57:35 
 
 
Gabarito 
Coment. 
 
 
Gabarito 
Coment. 
 
 
Gabarito 
Coment. 
 
 
 
 
 7a Questão 
 
Assumindo que estamos com uma estrutura de dados do tipo FIFO, as operações 
abaixo vão resultar em que elementos na mesma: ENFILEIRAR(4), 
ENFILEIRAR(5), ENFILEIRAR(6), DESENFILEIRAR(), DESENFILEIRAR(), 
ENFILEIRAR(5), ENFILEIRAR(7), DESENFILEIRAR() 
 
 
4 5 6 
 
5 7 
 
7 5 
 
4 5 
 
4 6 7 
Respondido em 19/05/2020 21:57:27 
 
 
 
 
 8a Questão 
 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881753116&cod_hist_prova=194389672&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881753116&cod_hist_prova=194389672&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881753116&cod_hist_prova=194389672&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881753116&cod_hist_prova=194389672&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881753116&cod_hist_prova=194389672&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881753116&cod_hist_prova=194389672&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881753116&cod_hist_prova=194389672&pag_voltar=otackahttp://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881753116&cod_hist_prova=194389672&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881753116&cod_hist_prova=194389672&pag_voltar=otacka
 
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: 
 
 
Matriz 
 
Fila 
 
Bolha 
 
Struct 
 
Pilha 
 
 
 
1a Questão 
 
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 estrutura armazenada 
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. 
 
 
Acesso, representação, compartilhamento de memória. 
 
Proteção de memória, transferência de dados, estruturas simples. 
 
Transferência de dados, gerenciamento de memória e procedimentos 
menos intuitivos. 
 
Previsão de espaço físico, estruturas complexas, procedimentos menos 
intuitivos. 
 
Compartilhamento de memória, maleabilidade e facilidade para 
inserção e remoção de componentes. 
Respondido em 19/05/2020 21:57:59 
 
 
Explicação: 
FALSO . Previsão de espaço 
físico, estruturas complexas, 
procedimentos menos intuitivos. 
 
FALSO 
Acesso, representação, 
compartilhamento de memória. 
 
FALSO 
Proteção de memória, transferência de 
dados, estruturas simples. 
 
FALSO 
Transferência de dados, gerenciamento 
de memória e procedimentos menos 
intuitivos. 
 
VERDADEIRO 
Compartilhamento de memória, 
maleabilidade e facilidade para inserção 
e remoção de componentes. 
 
 
Gabarito 
Coment. 
 
 
 
 
 2a Questão 
 
Sou uma empresária que quer crescer e por isso, tenho que aumentar 
progressivamente a minha lista de clientes, sem limitar este crescimento. Assim, 
à medida que novos clientes são cadastrados, posso, se necessário, contratar mais 
e mais empregados. Marque a opção que especifica o tipo de lista e o tipo de 
alocação de memória mais adequados para este problema. 
 
 
fila encadeada e alocação dinâmica de memória 
 
pilha dinâmica e alocação dinâmica de memória 
 
lista encadeada 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 
Respondido em 19/05/2020 21:58:03 
 
 
Gabarito 
Coment. 
 
 
 
 
 3a Questão 
 
Marque a afirmativa que represente uma separação. 
 
 
Juntar duas listas, colocando uma lista no final de outra, obtendo, ao final, 
uma só lista resultante. 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881758633&cod_hist_prova=194389943&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881758633&cod_hist_prova=194389943&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881758633&cod_hist_prova=194389943&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881758633&cod_hist_prova=194389943&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881758633&cod_hist_prova=194389943&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881758633&cod_hist_prova=194389943&pag_voltar=otacka
 
Alterar a ordem dos dados da lista do final para o início, atualizando a 
lista. 
 
Consiste em dividir a lista em duas outras listas. A quantidade de nós que 
cada lista terá, depende da necessidade. 
 
Intercalar 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. 
Respondido em 19/05/2020 21:58:12 
 
 
Gabarito 
Coment. 
 
 
 
 
 4a Questão 
 
Qual é o resultado do código abaixo: 
 int a =10; 
int *p = &a; 
cout<< &p << endl; 
 
 
O endereço da variável a será impresso 
 
O conteúdo da variável p será impresso 
 
O endereço da variável p será impresso 
 
O conteúdo da variável a será impresso 
 
Nenhuma das opções anteriores 
Respondido em 19/05/2020 21:58:08 
 
 
Explicação: 
 
Analisando o trecho de código : 
Linha 1 : A variável a recebeu o valor 10 
Linha 2 : p é declarado como ponteiro para inteiro e recebe, na declaração, o 
endereço 
de a. 
Linha 3 : É impresso o endereço do ponteiro p. 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881758633&cod_hist_prova=194389943&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881758633&cod_hist_prova=194389943&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881758633&cod_hist_prova=194389943&pag_voltar=otacka
 
Opções : 
 
>> O endereço da variável a será impresso 
Explicação : Falso. O endereço de a é p ou &a. 
 
>> O endereço da variável p será impresso 
Explicação : Correto. Usou o operador & antes de p. 
 
>> O conteúdo da variável a será impresso 
Explicação : Falso. Para imprimir a temos que fazer cout << a; ou fazer cout 
<< *p; 
 
O conteúdo da variável p será impresso 
Explicação : FAlso. É impresso o endereço de p, pois se usou &. 
 
Nenhuma das opções anteriores 
Explicação : FAlso. Basta ver as opções anteriores. 
 
 
 
 
 5a Questão 
 
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. 
 
 
salario=5000.00; 
 
pont.empregado.salario=5000.00 
 
pont.salario=5000.00; 
 
pont.empregado->salario=5000.00; 
 
pont->empregado->salario=5000.00; 
Respondido em 19/05/2020 21:58:17 
 
 
Explicação: 
Criar a entrada: 
salario=5000.00; 
 
 
 
 
 6a Questão 
 
Podemos dizer que uma lista encadeada tem as seguintes características: 
i) conhecida como lista ligada. 
ii) seus nós são responsáveis para manter a sequência da lista. 
iii) o último nó deve apontar para NULL. 
Assinale a alternativa que informa as afirmativas corretas. 
 
 
Somente as afirmativas i e ii estão corretas. 
 
Todas as afirmativas estão corretas. 
 
Somente a afirmativa i esta correta. 
 
Somente a afirmativa iii esta correta. 
 
Todas as afirmativas estão incorretas. 
Respondido em 19/05/2020 21:58:22 
 
 
Gabarito 
Coment. 
 
 
 
 
 7a Questão 
 
Em uma rotina em que se pretenda inserir o primeiro dado em uma estrutura 
dinâmica, é correto afirmar que: 
 
 
Só deve existir estrutura de repetição se ocorrer a inclusão de mais de um 
dado simultaneamente 
 
Não deve existir uma estrutura de repetição. 
 
Existe uma instrução de repetição para percorrer a lista. 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881758633&cod_hist_prova=194389943&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881758633&cod_hist_prova=194389943&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881758633&cod_hist_prova=194389943&pag_voltar=otacka
 
Deve existir uma estrutura de repetição somente de a lista for duplamente 
encadeada. 
 
Deve existir uma estrutura de repetição somente se a estrutura for circular. 
Respondidoem 19/05/2020 21:58:37 
 
 
Gabarito 
Coment. 
 
 
 
 
 8a Questão 
 
Assinale a alternativa correta sobre alocação de memória. 
 
 
É correto afirmar que a alocação dinâmica de memória sempre leva a 
programas mais rápidos. 
 
Uma das vantagens da alocação dinâmica sobre a alocação estática é que não 
é necessário fazer a liberação da memória utilizada. 
 
Alocação estática de memória refere-se ao processo de alocar memória com o 
uso de ponteiros. 
 
A declaração de um vetor é um exemplo clássico de alocação dinâmica de 
memória. 
 
Na alocação dinâmica de memória, a memória é alocada sob demanda, 
apenas quando necessário. 
Respondido em 19/05/2020 21:58:49 
1a Questão 
 
 Tenho uma lista não ordenada de clientes em que registro apenas a matrícula, 
o nome, o endereço e o telefone de cada cliente. Como não tenho limites para 
o crescimento da minha lista, como posso implementar a inserção de um novo 
cliente na lista, sabendo que cada cliente é do tipo Cliente e a lista é do tipo 
Lista assim definidos : 
struct Cliente { 
 long int matricula; 
 string nome, endereco, tel; 
}; 
struct Lista { 
 Cliente c; 
 struct Lista *link; 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881758633&cod_hist_prova=194389943&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881758633&cod_hist_prova=194389943&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881758633&cod_hist_prova=194389943&pag_voltar=otacka
 }; 
 
 
Lista insereCliente(Lista *p, Cliente cl) 
{ 
 Lista novo[]; 
 novo[0].c = cl; 
 novo[0].link = p; 
 return novo; 
} 
 
 
Lista * insereCliente(Lista *p) { 
 Lista *novo = new Lista; 
 Cliente cl; 
 novo->c = cl; 
 novo->link = p; 
 return novo; 
} 
 
Lista * insereCliente(Lista *p, Cliente cl) 
{ 
 Lista *novo = new Lista; 
 novo->c = cl; 
 novo->link = p; 
 return novo; 
} 
 
Lista * insereCliente(Lista *p, Cliente cl) 
{ 
 Lista *novo ; 
 novo->c = cl; 
 novo->link = p; 
 return novo; 
} 
 
 Lista * insereCliente(Lista *p, Cliente cl) 
{ 
 Lista *novo = new Lista; 
 novo.c = cl; 
 novo.link = p; 
 return novo; 
} 
Respondido em 19/05/2020 21:59:12 
 
 
Gabarito 
Coment. 
 
 
 
 
 2a Questão 
 
QUAL A SAÍDA DO PROGRAMA ABAIXO? 
 
 
#include 
 
main() 
{ 
 int x=5,*p; 
 p=&x; 
 
 cout << x - *p << " " << **&*&p + 1 << " " << *p*2+*p << " " 
<< x+**&p; 
 system("pause"); 
} 
 
 
0 8 16 10 
 
1 6 15 12 
 
0 6 15 10 
 
0 6 15 11 
 
0 6 16 14 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881765278&cod_hist_prova=194390315&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881765278&cod_hist_prova=194390315&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881765278&cod_hist_prova=194390315&pag_voltar=otacka
Respondido em 19/05/2020 21:59:18 
 
 
 
 
 3a Questão 
 
Em uma lista linear simplesmente encadeada. 
 
 
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. 
 
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. 
Respondido em 19/05/2020 21:59:24 
 
 
Gabarito 
Coment. 
 
 
 
 
 4a Questão 
 
Sobre listas encadeadas, é INCORRETO afirmar que: 
 
 
possuem tamanho fixo; 
 
o final da lista faz uma referência para NULL; 
 
pilhas e filas são versões limitadas de listas encadeadas, pois as inserções 
e remoções não ocorrem em qualquer parte. 
 
são acessadas pelo primeiro nodo da lista; 
 
a memória é alocada dinamicamente; 
Respondido em 19/05/2020 21:59:28 
 
 
Explicação: 
Uma lista encadeada não tem tamanho fixo, pois usa-se alocação e desalocação 
dinâmica de memória. As demais afirmativas estão corretas. 
 
 
 
 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881765278&cod_hist_prova=194390315&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881765278&cod_hist_prova=194390315&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881765278&cod_hist_prova=194390315&pag_voltar=otacka
 5a Questão 
 
Qual o valor de x no final do programa? int main() { int x, *p, y; x = 3; p = &x; y 
= *p; y = 7; (*p)++; (*p) += y; return(0); } 
 
 
7 
 
3 
 
11 
 
-4 
 
Nenhuma das anteriores. O programa possui um erro de sintaxe. 
Respondido em 19/05/2020 21:59:16 
 
 
Explicação: 
Considerando o trecho do programa dado, vamos analisar passo a passo. 
int x, *p, y; 
x = 3; 
p = &x; //p aponta para x, que vale 3 
y = *p; //y recebe o conteúdo da área apontada por p, que é 3. Logo, y 
recebe 3. 
y = 7; //Agora y recebe 7 
(*p)++; //A área apontada por p é incrementada. Ou seja, x é incrementado, 
passando a valer 4 
(*p) += y; //Equivale a *p = *p + y; Logo, *p recebe 4 + 7, pois *p é 
x. Então, *p, que é x recebe 11. 
Portanto, a resposta certa é 11. 
 
 
 
 
 6a Questão 
 
Seja a seguinte seqüência de instruções em um programa C++: int *pti; int i = 10; 
pti = &i; Qual afirmativa é falsa? 
 
 
ao se executar *pti = 20; i passará a ter o valor 20 
 
pti armazena o endereço de i 
 
ao se alterar o valor de i, *pti será modificado 
 
*pti é igual a 10 
 
pti é igual a 10 
Respondido em 19/05/2020 21:59:22 
 
 
Explicação: 
Analisando cada opção : 
 
pti é igual a 10 
Explicação : A afirmativa está incorreta porque *pti é igual 10 e não pti é 
igual a 10. Note que pti é o endereço de i. Logo, a afirmativa deve ser 
marcada. 
 
pti armazena o endereço de i 
Explicação : pti é um ponteiro que recebeu o endereço (&) de i. Logo, a 
afirmativa está correta e não deve ser marcada. 
 
*pti é igual a 10 
Explicação : Afirmativa correta e não deve ser marcada, visto que * é o 
operador de indireção. Como pti aponta para i, logo *pti é i, que vale 10. 
 
ao se executar *pti = 20; i passará a ter o valor 20 
Explicação : Afirmativa correta e não deve ser marcada, visto que *pti acessa 
a área apontada por i. Se *pti recebeu 20 significa que i recebeu 20. 
 
 
 
ao se alterar o valor de i, *pti será modificado 
 
Explicação : Afirmativa correta e não deve ser marcada, visto que pti 
aponta para i e dessa forma, *pti é i. 
 
 
 
 
 7a Questão 
 
Considere 
 
int *ptr, *qtr, *r; 
 
int a = 10, b = 20; 
 
 
 
Após executar cada instrução conforme a ordem dada a seguir : 
 
 
ptr = &a; 
 
qtr = &b; 
 
*ptr = *ptr + *qtr; 
 
++(*qtr); 
 
r = qtr; 
 
qtr = ptr; 
 
 
 
assinale a opção que mostra, correta e respectivamente, os 
valores de *ptr, *qtr , *r , a e b . 
 
 
 
30 30 21 10 20 
 
30 21 21 10 20 
 
30 20 0 30 21 
 
30 20 20 10 20 
 
30 30 21 30 21 
Respondido em 19/05/2020 21:59:29 
 
 
 
 
 8a Questão 
 
Tem-se uma estrutura de dados do tipo lista encadeada com 10 elementos, em 
que o primeiro e o último elemento estão ligados entre si. Trata-se de uma 
estrutura de dados denominada Lista 
 
 
Encadeada Circular 
 
Duplamente Encadeada 
 
Binária 
 
Balanceada 
 
Invertida 
Respondido em 19/05/2020 21:59:51 
 
 
Explicação: 
Uma lista encadeada circular é uma lista encadeada e portanto, dinÂmica,em 
que o ponteiro do último nó aponta para o primeiro nó. A lista circular também 
pode ser vazia. 
 
 
1a Questão 
 
Admita a seguinte estrutura de nó de uma lista simplesmente encadeada: struct 
tno { int chave; tno *proximo; }; Admita, agora, a seguinte declaração de uma 
variável do tipo nó: tno *no; Qual das alternativas a seguir traz uma operação 
válida sobre essa variável? 
 
 
no.chave = 5; 
 
no->proximo = new tno; 
 
no->chave = new int; 
 
no->proximo = -10; 
 
no.proximo = no; 
Respondido em 19/05/2020 22:02:45 
 
 
Explicação: 
Analisando cada item : 
 no.chave = 5; 
>> Como no é ponteiro então temos que usar a seta para acessar os campos da 
área apontada por no. 
 no->proximo = -10; 
>> O campo proximo é de ponteiro então não pode receber inteiro. 
 no->chave = new int; 
>> O campo chave é de inteiro então não deve receber endereço de inteiro. O 
operador new aloca memória e retorna o endereço da área alocada. 
 no->proximo = new tno; 
>> É correto porque o campo proximo é campo de ponteiro e pode receber 
outro ponteiro, pode receber NULL ou pode receber endereço da área alocada 
com new, como foi o caso. 
 
no.proximo = no; 
>> Incorreto porque não pode se pode usar o ponto para acessar campo de 
struct apontada pelo ponteiro no. 
 
 
 
 
 2a Questão 
 
Sobre listas simplesmente encadeadas, é INCORRETO afirmar que : 
 
 
podem implementar pilha e fila dinâmicas 
 
os nós da lista são alocados dinamicamente. 
 
possuem tamanho fixo 
 
são acessadas através de um ponteiro para o primeiro nó da lista 
 
o ponteiro do último nó é NULL 
Respondido em 19/05/2020 22:03:10 
 
 
Explicação: 
Por definição, uma lista encadeada não tem tamanho pré-definido, pois os nós da 
lista são alocados em tempo de execução, de acordo com a demanda. 
 
 
 
 
 3a Questão 
 
Considere uma lista simplesmente encadeada com placas de carros. Assinale a opção que, 
corretamente, imprime todas as placas da lista. Considere : 
struct no { 
 string placa; 
 struct no *link; 
}; 
no *p; //p aponta para o início da lista 
 
 
 
 
void imprimir(no *p) { 
 while (p != NULL) { 
 cout << p→placa; 
 p = p→link; 
} 
} 
 
 
 
void imprimir(no *p) { 
 while (p != NULL) { 
 cout << p.placa; 
 p = p.link; 
 } 
} 
 
void imprimir(no *p) { 
 if (p != NULL) { 
 cout << p→placa; 
 p = p→link; 
 } 
} 
 
void imprimir(no *p) { 
 while (p != NULL) { 
 cout << p→placa; 
 } 
} 
 
 
 
void imprimir(no p) { 
 while (p != NULL) { 
 cout << p→no; 
 p = p→link; 
 } 
} 
 
Respondido em 19/05/2020 22:02:56 
 
 
Gabarito 
Coment. 
 
 
 
 
 4a Questão 
 
A linguagem C++ oferece quatro meios de criação de tipos de dados: matrizes, 
estruturas ou structs, uniões e classes. As estruturas, que passaremos a chamar 
simplesmente de structs, são tipos de variáveis que agrupam dados geralmente 
desiguais, enquanto matrizes são variáveis que agrupam dados similares. Devido 
a esta característica as structs são utilizadas para modelar nodos (nós) de 
estruturas dinâmicas. Portanto podemos afirmar que: 
 
 
As estruturas dinâmicas são assim chamadas, pois podem fazer alocação 
de memória em tempo de compilação e terem seus tamanhos alterados de 
acordo com a demanda. 
 
As estruturas dinâmicas são assim chamadas, pois não podem fazer 
alocação de memória em tempo de execução, mas mesmo assim 
conseguem ter seus tamanhos alterados de acordo com a demanda. 
 
As estruturas dinâmicas são assim chamadas, pois podem fazer alocação 
de memória em tempo de compilação e 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 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 execução e terem seus tamanhos alterados de 
acordo com a demanda. 
Respondido em 19/05/2020 22:03:01 
 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881789116&cod_hist_prova=194391624&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881789116&cod_hist_prova=194391624&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881789116&cod_hist_prova=194391624&pag_voltar=otacka
 
 
 
 5a Questão 
 
Em uma aplicação que usa processos de alocação estática e dinâmica de memória 
é correto afirmar que 
 
 
A memória utilizada pela aplicação é totalmente alocada após o inicio de 
sua execução 
 
Toda a memória utilizada pela aplicação não muda durante toda a sua 
execução 
 
Apenas a memória associada às variáveis do tipo vetor é alocada após o 
inicio da execução da aplicação 
 
A memória utilizada pela aplicação é inicialmente estática, mas pode 
mudar 
 
Todas as afirmações acima são incorretas 
Respondido em 19/05/2020 22:03:22 
 
 
Gabarito 
Coment. 
 
 
 
 
 6a Questão 
 
Uma estrutura de dados pode ser Estática ou Dinâmica. No primeiro caso os 
limites são: 
 
 
Determinados pelos ponteiros 
 
Determinados pela memória 
 
Indeterminados 
 
Determinados pelo problema em que serão utilizados 
 
Determinados pelo usuário 
Respondido em 19/05/2020 22:03:26 
 
 
Explicação: 
Em uma estrutura estática o espaço em memória é definido antes da execução e 
será definido pelas características do problema. Não é indeterminado, não temos 
que usar ponteiros, não é determinado pelo usuário ou pela memória. 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881789116&cod_hist_prova=194391624&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881789116&cod_hist_prova=194391624&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881789116&cod_hist_prova=194391624&pag_voltar=otacka
 
Quando a alocação é dinâmica, o espaço em memória é definido durante a 
execução do programa e assim, não podemos determinar previamente o quanto 
de memória será alocada. 
 
 
 
 
 7a Questão 
 
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 
 
200 9 100 
 
100 9 200 
 
9 9 200 
 
100 100 200 
Respondido em 19/05/2020 22:03:16 
 
 
Explicação: 
100 ===> endereço da memória da variável a 
9 ===> valor da variável a 
200 ===> endereço da memória da variável ponteiro 
 
 
 
 
 8a Questão 
 
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, Paciente pac) 
{ 
 List *novo = new List; 
 novo.p = pac; 
 novo.link = i; 
 return novo; 
} 
 
List * inserePac(List *i) { 
 List *novo = new List; 
 Paciente pat; 
 novo->p = pat; 
 novo->link = i; 
 return novo; 
} 
 
List insereCliente(List *i, Paciente pac) 
{ 
 List novo[]; 
 novo[0].p = pac; 
 novo[0].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 pt) 
{ 
 List *novo = new List; 
 novo->p = pt; 
 novo->link =i; 
 return novo; 
} 
 
1a Questão 
 
Sabendo que uma fila encadeada possui seus nós definidos pela : 
 
struct no { 
int x; 
no *prox; 
}; 
 
Marque a alternativa que representa corretamente a criação ou alocação do nó na 
sintaxe do C++ para utilização na fila. 
 
 
no *p -> new no; 
 
p *no -> new no; 
 
no p -> new no; 
 
no *p=new no; 
 
p *no=new no; 
Respondido em 19/05/2020 21:59:49 
 
 
Gabarito 
Coment. 
 
 
 
 
 2a Questão 
 
Sobre as estruturas de dados existentes podemos afirmar que: 
 
 
Na estrutura do tipo LIFO, as informações são inseridas no início e 
removidas do final. 
 
Na estrutura das Pilhas a manipulação dos dados sempre se dá no topo. 
 
Na estrutura do tipo FIFO, as informações são inseridas no início e 
removidas do final. 
 
A estrutura do tipo LIFO sempre realiza a remoção do elemento mais 
antigo inserido. 
 
Encadeamento estático e dinâmico apresentam o mesmo funcionamento 
de alocação na estrutura do tipo PILHA. 
Respondido em 19/05/2020 22:00:11 
 
 
Explicação: 
 
Na estrutura do tipo FIFO, as informações são inseridas no início e 
removidas do final. 
Falso. Fila segue a lógica FIFO, ou seja, o primeiro a entrar será o primeiro a 
sair. Logo, insere no fim e retira do início da fila. 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881769402&cod_hist_prova=194390605&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881769402&cod_hist_prova=194390605&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881769402&cod_hist_prova=194390605&pag_voltar=otacka
 
Na estrutura do tipo LIFO, as informações são inseridas no início e 
removidas do final. 
Falso. Pilha segue a lógica LIFO, o último a entrar será o primeiro a 
sair. Insere-se no topo e retira-se do topo , ou seja, da mesma extremidade. 
 
Na estrutura das Pilhas a manipulação dos dados sempre se dá no topo. 
Verdade. SEgue-se a lógica LIFO. 
 
Encadeamento estático e dinâmico apresentam o mesmo funcionamento 
de alocação na estrutura do tipo PILHA. 
Falso. No encadeamento estático a alocação é contígua e ocorre antes da 
execução. No encadeamento dinâmico a alocação de memória ocorre em 
tempo de execução e o armazenamento é encadeado. 
 
A estrutura do tipo LIFO sempre realiza a remoção do elemento mais 
antigo inserido. 
 
Falso. A remoção se dá no último inserido, ou seja, o mais novo inserido na 
pilha. 
 
 
 
 
 
 
 3a Questão 
 
Estava um aluno estudando Lista Simplesmente Encadeada quando 
encontrou em um site a definição da struct nodo e de uma função cujo 
nome você deverá escolher para substituir XXX nas opções abaixo depois 
que analisar a função, assumindo que teste foi realizado, permitindo que a 
operação fosse realizada. 
 
 struct nodo 
{ 
 int info; 
 struct nodo *prox; 
}; 
nodo* XXX(nodo *ptr, int valor) 
{ 
 nodo *temp = new nodo; 
 ... 
 temp->info = valor; 
 temp->prox = ptr; 
 return temp; 
} 
 
 
InsereNoFrente 
 
ListaNo 
 
RemoveNo 
 
BuscaNaLista 
 
InsereNoFim 
Respondido em 19/05/2020 22:00:17 
 
 
Gabarito 
Coment. 
 
 
 
 
 4a Questão 
 
Em termos da estrutura de dados do tipo FILA (fila encadeada com alocação 
dinâmica), a sequência de ações 
 insere(10), insere(3), insere(5), insere(8), remove(), remove(), insere(20), 
promoveria a configuração da estrutura: 
 
 
10 3 20 
 
5 8 20 
 
5 8 
 
20 5 8 
 
10 3 5 8 20 
Respondido em 19/05/2020 22:00:21 
 
 
Explicação: 
 insere(10), insere(3), insere(5), insere(8), remove(), remove(), insere(20), 
10-> 3 -> 5 -> 8 após inserir 10,3,5 e 8. Inserção no fim 
Depois do 1o. remove, temos 3->5->8 
Depois do 2o. remove temos 5 -> 8 
Ao ocorrer o último insere temos : 5 -> 8 - > 20, sendo que 5 esta no início e 20 
no fim 
 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881769402&cod_hist_prova=194390605&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881769402&cod_hist_prova=194390605&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881769402&cod_hist_prova=194390605&pag_voltar=otacka
 
 
 
 5a Questão 
 
Tínhamos declarado um ponteiro de nome ptr e precisávamos construir uma estrutura 
de repetição que pudesse repetir enquanto o ponteiro não fosse nulo. Observe os 
trechos abaixo e assinale qual a afirmativa correta. 
 
I if (ptr !=NULL) 
II if( !ptr ) 
III if(ptr) 
IV while (ptr !=NULL) 
V while (ptr) 
 
 
III e V estão corretas 
 
I e IV estão corretas 
 
I e II estão corretas. 
 
IV e V estão corretas. 
 
III está correta 
Respondido em 19/05/2020 22:00:26 
 
 
Gabarito 
Coment. 
 
 
 
 
 6a Questão 
 
Seja o seguinte exemplo de nodo de uma lista de encadeada: 
 
struct nodo{ 
 float valor; 
 string produto; 
 nodo * proximo; 
 }; 
Sabendo-se que nesta lista o último nó ou nodo possui o campo 
próximo nulo (null), marque a alternativa que representa 
corretamente a operação de busca do último nodo, a partir de 
um ponteiro pt apontado para o primeiro nodo da lista. 
 
 
while(pt->próximo)pt=pt->próximo; 
 
while(próximo)pt=próximo; 
 
while(pt != null)pt=pt->próximo; 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881769402&cod_hist_prova=194390605&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881769402&cod_hist_prova=194390605&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881769402&cod_hist_prova=194390605&pag_voltar=otacka
 
while(pt->próximo->proximo)pt=pt->próximo; 
 
while(pt->próximo != null)pt=pt->próximo->proximo; 
Respondido em 19/05/2020 22:00:22 
 
 
Explicação: 
O código será: 
while(pt->próximo)pt=pt->próximo; 
 
 
 
 
 7a Questão 
 
Para converter de decimal para binário usamos a estrutura de dados pilha. 
Assinale a opção que, corretamente, indica as ações corretas para empilhar o 
resto da divisão gerado no processo de conversão, considerando uma lista 
simplesmente encadeada. Considere o tipo definido abaixo : 
 
struct no { 
int dado; 
struct no *link; 
}; 
 
 
Basta alocar memória com new e armazenar o resto da divisão do número 
por 2 no campo dado do novo nó . 
 
É preciso armazenar o resto da divisão do número por 2 no campo dado do 
primeiro nó da lista e retornar o ponteiro para este nó. 
 
É preciso alocar memória com new, armazenar o resto da divisão do 
número por 2 no campo dado do novo nó, apontar o link do novo nó para 
o início da lista e enfim, retornar o ponteiro para o novo nó. 
 
Basta alocar memória com new, armazenar o resto da divisão do número 
por 2 no campo dado do novo nó e aterrar o link do novo nó. 
 
Não é necessário alocar memória com new. Basta criar uma struct do tipo 
no, armazenar o resto da divisão número por 2 no campo dado e aterrar o 
campo link. 
Respondido em 19/05/2020 22:00:24 
 
 
Gabarito 
Coment. 
 
 
 
 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881769402&cod_hist_prova=194390605&pag_voltar=otackahttp://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881769402&cod_hist_prova=194390605&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881769402&cod_hist_prova=194390605&pag_voltar=otacka
 8a Questão 
 
A pilha é uma estrutura de dados que permite a inserção/ remoção de itens 
dinamicamente seguindo a norma de último a entrar, primeiro a sair. Suponha que 
para uma estrutura de dados, tipo pilha, são definidos os comandos: 
- PUSH (p, n): Empilha um número "n" em uma estrutura de dados do tipo pilha "p"; 
- POP (p): Desempilha o elemento do topo da pilha. 
Considere que, em uma estrutura de dados tipo pilha p, inicialmente vazia, sejam 
executados os seguintes comandos: 
PUSH (p, 10) 
PUSH (p, 5) 
PUSH (p, 3) 
PUSH (p, 40) 
POP (p) 
PUSH (p, 11) 
PUSH (p, 4) 
PUSH (p, 7) 
POP (p) 
POP (p) 
Após a execução dos comandos, o elemento no topo da pilha "p" e a soma dos 
elementos armazenados na pilha "p" são, respectivamente, 
 
 
11 e 80. 
 
7 e 40. 
 
4 e 80. 
 
11 e 29. 
 
7 e 29. 
Respondido em 19/05/2020 22:00:45 
 
 
Explicação: 
Passo a Passo: 
entra 10 // 10 
entra 5 // 5 / 10 
entra 3 // 3 / 5/ 10 
entra 40 // 40 / 5 /10 
retira 40 // 3 / 5 /10 
entra 11 // 11 / 3 / 5 /10 
entra 4 // 4 /11 / 3 / 5 /10 
entra 7 // 7 / 4 / 11 / 3 / 5 /10 
retira 7 // 4 / 11 / 3 / 5 /10 
retira 4 // 11 / 3 / 5 / 10 
Resultado da pilha: 11 / 3 / 5 / 10 
Topo: 11 
Somatorio da pilha é: 29 
 
1a Questão 
 
A pilha é uma estrutura de dados que permite a inserção/ remoção de itens 
dinamicamente seguindo a norma de último a entrar, primeiro a sair. Suponha que 
para uma estrutura de dados, tipo pilha, são definidos os comandos: 
- PUSH (p, n): Empilha um número "n" em uma estrutura de dados do tipo pilha 
"p"; 
- POP (p): Desempilha o elemento do topo da pilha. 
Considere que, em uma estrutura de dados tipo pilha p, inicialmente vazia, sejam 
executados os seguintes comandos: 
PUSH (p, 10) 
PUSH (p, 5) 
PUSH (p, 3) 
PUSH (p, 40) 
POP (p) 
PUSH (p, 11) 
PUSH (p, 4) 
PUSH (p, 7) 
POP (p) 
POP (p) 
Após a execução dos comandos, o elemento no topo da pilha "p" e a soma dos 
elementos armazenados na pilha "p" são, respectivamente, 
 
 
11 e 29. 
 
4 e 80. 
 
7 e 29. 
 
11 e 80. 
 
7 e 40. 
Respondido em 19/05/2020 22:01:00 
 
 
Explicação: 
Passo a Passo: 
entra 10 // 10 
entra 5 // 5 / 10 
entra 3 // 3 / 5/ 10 
entra 40 // 40 / 5 /10 
retira 40 // 3 / 5 /10 
entra 11 // 11 / 3 / 5 /10 
entra 4 // 4 /11 / 3 / 5 /10 
entra 7 // 7 / 4 / 11 / 3 / 5 /10 
retira 7 // 4 / 11 / 3 / 5 /10 
retira 4 // 11 / 3 / 5 / 10 
Resultado da pilha: 11 / 3 / 5 / 10 
Topo: 11 
Somatorio da pilha é: 29 
 
 
 
 
 2a Questão 
 
Sobre as estruturas de dados existentes podemos afirmar que: 
 
 
Na estrutura do tipo FIFO, as informações são inseridas no início e 
removidas do final. 
 
Na estrutura das Pilhas a manipulação dos dados sempre se dá no topo. 
 
A estrutura do tipo LIFO sempre realiza a remoção do elemento mais 
antigo inserido. 
 
Encadeamento estático e dinâmico apresentam o mesmo funcionamento 
de alocação na estrutura do tipo PILHA. 
 
Na estrutura do tipo LIFO, as informações são inseridas no início e 
removidas do final. 
Respondido em 19/05/2020 22:01:08 
 
 
Explicação: 
 
Na estrutura do tipo FIFO, as informações são inseridas no início e 
removidas do final. 
Falso. Fila segue a lógica FIFO, ou seja, o primeiro a entrar será o primeiro a 
sair. Logo, insere no fim e retira do início da fila. 
 
Na estrutura do tipo LIFO, as informações são inseridas no início e 
removidas do final. 
Falso. Pilha segue a lógica LIFO, o último a entrar será o primeiro a 
sair. Insere-se no topo e retira-se do topo , ou seja, da mesma extremidade. 
 
Na estrutura das Pilhas a manipulação dos dados sempre se dá no topo. 
Verdade. SEgue-se a lógica LIFO. 
 
Encadeamento estático e dinâmico apresentam o mesmo funcionamento 
de alocação na estrutura do tipo PILHA. 
Falso. No encadeamento estático a alocação é contígua e ocorre antes da 
execução. No encadeamento dinâmico a alocação de memória ocorre em 
tempo de execução e o armazenamento é encadeado. 
 
A estrutura do tipo LIFO sempre realiza a remoção do elemento mais 
antigo inserido. 
 
Falso. A remoção se dá no último inserido, ou seja, o mais novo inserido na 
pilha. 
 
 
 
 
 
 
 3a Questão 
 
Estava um aluno estudando Lista Simplesmente Encadeada quando 
encontrou em um site a definição da struct nodo e de uma função cujo 
nome você deverá escolher para substituir XXX nas opções abaixo depois 
que analisar a função, assumindo que teste foi realizado, permitindo que a 
operação fosse realizada. 
 
 struct nodo 
{ 
 int info; 
 struct nodo *prox; 
}; 
nodo* XXX(nodo *ptr, int valor) 
{ 
 nodo *temp = new nodo; 
 ... 
 temp->info = valor; 
 temp->prox = ptr; 
 return temp; 
} 
 
 
BuscaNaLista 
 
RemoveNo 
 
InsereNoFrente 
 
ListaNo 
 
InsereNoFim 
Respondido em 19/05/2020 22:01:11 
 
 
Gabarito 
Coment. 
 
 
 
 
 4a Questão 
 
Em termos da estrutura de dados do tipo FILA (fila encadeada com alocação 
dinâmica), a sequência de ações 
 insere(10), insere(3), insere(5), insere(8), remove(), remove(), insere(20), 
promoveria a configuração da estrutura: 
 
 
10 3 20 
 
5 8 
 
5 8 20 
 
10 3 5 8 20 
 
20 5 8 
Respondido em 19/05/2020 22:01:15 
 
 
Explicação: 
 insere(10), insere(3), insere(5), insere(8), remove(), remove(), insere(20), 
10-> 3 -> 5 -> 8 após inserir 10,3,5 e 8. Inserção no fim 
Depois do 1o. remove, temos 3->5->8 
Depois do 2o. remove temos 5 -> 8 
Ao ocorrer o último insere temos : 5 -> 8 - > 20, sendo que 5 esta no início e 20 
no fim 
 
 
 
 
 5a Questão 
 
Tínhamos declarado um ponteiro de nome ptr e precisávamos construir uma estrutura 
de repetição que pudesse repetir enquanto o ponteiro não fosse nulo. Observe os 
trechos abaixo e assinale qual a afirmativa correta. 
 
I if (ptr !=NULL) 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881773319&cod_hist_prova=194390902&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881773319&cod_hist_prova=194390902&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881773319&cod_hist_prova=194390902&pag_voltar=otacka
II if( !ptr ) 
III if(ptr) 
IV while (ptr !=NULL) 
V while (ptr) 
 
 
IV e V estão corretas. 
 
III e V estão corretas 
 
I e II estão corretas. 
 
I e IV estão corretas 
 
III está correta 
Respondido em 19/05/2020 22:01:21 
 
 
Gabarito 
Coment. 
 
 
 
 
 6a Questão 
 
Seja o seguinte exemplo de nodo de uma lista de encadeada: 
 
struct nodo{ 
 float valor; 
 string produto; 
 nodo * proximo; 
 }; 
Sabendo-se que nesta lista o último nó ou nodo possui o campo 
próximo nulo (null), marque a alternativa que representa 
corretamente a operação de busca do último nodo, a partir de 
um ponteiro pt apontado para o primeiro nodo da lista. 
 
 
while(pt->próximo->proximo)pt=pt->próximo; 
 
while(pt != null)pt=pt->próximo; 
 
while(pt->próximo)pt=pt->próximo; 
 
while(próximo)pt=próximo; 
 
while(pt->próximo != null)pt=pt->próximo->proximo; 
Respondido em 19/05/2020 22:01:26 
 
 
Explicação: 
O código será: 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881773319&cod_hist_prova=194390902&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881773319&cod_hist_prova=194390902&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881773319&cod_hist_prova=194390902&pag_voltar=otacka
while(pt->próximo)pt=pt->próximo;7a Questão 
 
Para converter de decimal para binário usamos a estrutura de dados pilha. 
Assinale a opção que, corretamente, indica as ações corretas para empilhar o 
resto da divisão gerado no processo de conversão, considerando uma lista 
simplesmente encadeada. Considere o tipo definido abaixo : 
 
struct no { 
int dado; 
struct no *link; 
}; 
 
 
Basta alocar memória com new, armazenar o resto da divisão do número 
por 2 no campo dado do novo nó e aterrar o link do novo nó. 
 
É preciso armazenar o resto da divisão do número por 2 no campo dado do 
primeiro nó da lista e retornar o ponteiro para este nó. 
 
Basta alocar memória com new e armazenar o resto da divisão do número 
por 2 no campo dado do novo nó . 
 
É preciso alocar memória com new, armazenar o resto da divisão do 
número por 2 no campo dado do novo nó, apontar o link do novo nó para 
o início da lista e enfim, retornar o ponteiro para o novo nó. 
 
Não é necessário alocar memória com new. Basta criar uma struct do tipo 
no, armazenar o resto da divisão número por 2 no campo dado e aterrar o 
campo link. 
Respondido em 19/05/2020 22:01:17 
 
 
Gabarito 
Coment. 
 
 
 
 
 8a Questão 
 
Sabendo que uma fila encadeada possui seus nós definidos pela : 
 
struct no { 
int x; 
no *prox; 
}; 
 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881773319&cod_hist_prova=194390902&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881773319&cod_hist_prova=194390902&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881773319&cod_hist_prova=194390902&pag_voltar=otacka
Marque a alternativa que representa corretamente a criação ou alocação do nó na 
sintaxe do C++ para utilização na fila. 
 
 
p *no=new no; 
 
no p -> new no; 
 
no *p -> new no; 
 
p *no -> new no; 
 
no *p=new no; 
 
1a Questão 
 
A pilha é uma estrutura de dados que permite a inserção/ remoção de itens 
dinamicamente seguindo a norma de último a entrar, primeiro a sair. Suponha que 
para uma estrutura de dados, tipo pilha, são definidos os comandos: 
- PUSH (p, n): Empilha um número "n" em uma estrutura de dados do tipo pilha 
"p"; 
- POP (p): Desempilha o elemento do topo da pilha. 
Considere que, em uma estrutura de dados tipo pilha p, inicialmente vazia, sejam 
executados os seguintes comandos: 
PUSH (p, 10) 
PUSH (p, 5) 
PUSH (p, 3) 
PUSH (p, 40) 
POP (p) 
PUSH (p, 11) 
PUSH (p, 4) 
PUSH (p, 7) 
POP (p) 
POP (p) 
Após a execução dos comandos, o elemento no topo da pilha "p" e a soma dos 
elementos armazenados na pilha "p" são, respectivamente, 
 
 
7 e 40. 
 
11 e 29. 
 
7 e 29. 
 
11 e 80. 
 
4 e 80. 
Respondido em 19/05/2020 22:03:59 
 
 
Explicação: 
Passo a Passo: 
entra 10 // 10 
entra 5 // 5 / 10 
entra 3 // 3 / 5/ 10 
entra 40 // 40 / 5 /10 
retira 40 // 3 / 5 /10 
entra 11 // 11 / 3 / 5 /10 
entra 4 // 4 /11 / 3 / 5 /10 
entra 7 // 7 / 4 / 11 / 3 / 5 /10 
retira 7 // 4 / 11 / 3 / 5 /10 
retira 4 // 11 / 3 / 5 / 10 
Resultado da pilha: 11 / 3 / 5 / 10 
Topo: 11 
Somatorio da pilha é: 29 
 
 
 
 
 2a Questão 
 
Sobre as estruturas de dados existentes podemos afirmar que: 
 
 
Na estrutura do tipo FIFO, as informações são inseridas no início e 
removidas do final. 
 
Encadeamento estático e dinâmico apresentam o mesmo funcionamento 
de alocação na estrutura do tipo PILHA. 
 
Na estrutura do tipo LIFO, as informações são inseridas no início e 
removidas do final. 
 
A estrutura do tipo LIFO sempre realiza a remoção do elemento mais 
antigo inserido. 
 
Na estrutura das Pilhas a manipulação dos dados sempre se dá no topo. 
Respondido em 19/05/2020 22:04:07 
 
 
Explicação: 
 
Na estrutura do tipo FIFO, as informações são inseridas no início e 
removidas do final. 
Falso. Fila segue a lógica FIFO, ou seja, o primeiro a entrar será o primeiro a 
sair. Logo, insere no fim e retira do início da fila. 
 
Na estrutura do tipo LIFO, as informações são inseridas no início e 
removidas do final. 
Falso. Pilha segue a lógica LIFO, o último a entrar será o primeiro a 
sair. Insere-se no topo e retira-se do topo , ou seja, da mesma extremidade. 
 
Na estrutura das Pilhas a manipulação dos dados sempre se dá no topo. 
Verdade. SEgue-se a lógica LIFO. 
 
Encadeamento estático e dinâmico apresentam o mesmo funcionamento 
de alocação na estrutura do tipo PILHA. 
Falso. No encadeamento estático a alocação é contígua e ocorre antes da 
execução. No encadeamento dinâmico a alocação de memória ocorre em 
tempo de execução e o armazenamento é encadeado. 
 
A estrutura do tipo LIFO sempre realiza a remoção do elemento mais 
antigo inserido. 
 
Falso. A remoção se dá no último inserido, ou seja, o mais novo inserido na 
pilha. 
 
 
 
 
 
 
 3a Questão 
 
Estava um aluno estudando Lista Simplesmente Encadeada quando 
encontrou em um site a definição da struct nodo e de uma função cujo 
nome você deverá escolher para substituir XXX nas opções abaixo depois 
que analisar a função, assumindo que teste foi realizado, permitindo que a 
operação fosse realizada. 
 
 struct nodo 
{ 
 int info; 
 struct nodo *prox; 
}; 
nodo* XXX(nodo *ptr, int valor) 
{ 
 nodo *temp = new nodo; 
 ... 
 temp->info = valor; 
 temp->prox = ptr; 
 return temp; 
} 
 
 
InsereNoFim 
 
ListaNo 
 
InsereNoFrente 
 
RemoveNo 
 
BuscaNaLista 
Respondido em 19/05/2020 22:04:14 
 
 
Gabarito 
Coment. 
 
 
 
 
 4a Questão 
 
Em termos da estrutura de dados do tipo FILA (fila encadeada com alocação 
dinâmica), a sequência de ações 
 insere(10), insere(3), insere(5), insere(8), remove(), remove(), insere(20), 
promoveria a configuração da estrutura: 
 
 
5 8 
 
10 3 5 8 20 
 
10 3 20 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881795844&cod_hist_prova=194391920&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881795844&cod_hist_prova=194391920&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881795844&cod_hist_prova=194391920&pag_voltar=otacka
 
5 8 20 
 
20 5 8 
Respondido em 19/05/2020 22:04:16 
 
 
Explicação: 
 insere(10), insere(3), insere(5), insere(8), remove(), remove(), insere(20), 
10-> 3 -> 5 -> 8 após inserir 10,3,5 e 8. Inserção no fim 
Depois do 1o. remove, temos 3->5->8 
Depois do 2o. remove temos 5 -> 8 
Ao ocorrer o último insere temos : 5 -> 8 - > 20, sendo que 5 esta no início e 20 
no fim 
 
 
 
 
 5a Questão 
 
Tínhamos declarado um ponteiro de nome ptr e precisávamos construir uma estrutura 
de repetição que pudesse repetir enquanto o ponteiro não fosse nulo. Observe os 
trechos abaixo e assinale qual a afirmativa correta. 
 
I if (ptr !=NULL) 
II if( !ptr ) 
III if(ptr) 
IV while (ptr !=NULL) 
V while (ptr) 
 
 
III e V estão corretas 
 
I e IV estão corretas 
 
IV e V estão corretas. 
 
I e II estão corretas. 
 
III está correta 
Respondido em 19/05/2020 22:04:25 
 
 
Gabarito 
Coment. 
 
 
 
 
 6a Questão 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881795844&cod_hist_prova=194391920&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881795844&cod_hist_prova=194391920&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881795844&cod_hist_prova=194391920&pag_voltar=otacka
 
Seja o seguinte exemplo de nodo de uma lista de encadeada: 
 
struct nodo{ 
 float valor; 
 string produto; 
 nodo * proximo; 
 }; 
Sabendo-se que nesta lista o último nó ou nodo possui o campo 
próximo nulo (null), marque a alternativa que representa 
corretamentea operação de busca do último nodo, a partir de 
um ponteiro pt apontado para o primeiro nodo da lista. 
 
 
while(pt != null)pt=pt->próximo; 
 
while(pt->próximo != null)pt=pt->próximo->proximo; 
 
while(pt->próximo)pt=pt->próximo; 
 
while(pt->próximo->proximo)pt=pt->próximo; 
 
while(próximo)pt=próximo; 
Respondido em 19/05/2020 22:04:11 
 
 
Explicação: 
O código será: 
while(pt->próximo)pt=pt->próximo; 
 
 
 
 
 7a Questão 
 
Para converter de decimal para binário usamos a estrutura de dados pilha. 
Assinale a opção que, corretamente, indica as ações corretas para empilhar o 
resto da divisão gerado no processo de conversão, considerando uma lista 
simplesmente encadeada. Considere o tipo definido abaixo : 
 
struct no { 
int dado; 
struct no *link; 
}; 
 
 
É preciso armazenar o resto da divisão do número por 2 no campo dado do 
primeiro nó da lista e retornar o ponteiro para este nó. 
 
É preciso alocar memória com new, armazenar o resto da divisão do 
número por 2 no campo dado do novo nó, apontar o link do novo nó para 
o início da lista e enfim, retornar o ponteiro para o novo nó. 
 
Basta alocar memória com new, armazenar o resto da divisão do número 
por 2 no campo dado do novo nó e aterrar o link do novo nó. 
 
Não é necessário alocar memória com new. Basta criar uma struct do tipo 
no, armazenar o resto da divisão número por 2 no campo dado e aterrar o 
campo link. 
 
Basta alocar memória com new e armazenar o resto da divisão do número 
por 2 no campo dado do novo nó . 
Respondido em 19/05/2020 22:04:33 
 
 
Gabarito 
Coment. 
 
 
 
 
 8a Questão 
 
Sabendo que uma fila encadeada possui seus nós definidos pela : 
 
struct no { 
int x; 
no *prox; 
}; 
 
Marque a alternativa que representa corretamente a criação ou alocação do nó na 
sintaxe do C++ para utilização na fila. 
 
 
no *p -> new no; 
 
no p -> new no; 
 
p *no=new no; 
 
no *p=new no; 
 
p *no -> new no; 
 
1a Questão 
 
Geralmente em algumas situações é necessário fazer a desalocação do espaço 
utilizado na memória. Porém, isso depende de como a reserva de uma quantidade 
de espaço de memória é feita, pois em alguns casos, o próprio compilador faz a 
desalocação. Quando o compilador não faz esta desalocação a memória foi 
reservada utilizando______. 
 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881795844&cod_hist_prova=194391920&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881795844&cod_hist_prova=194391920&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881795844&cod_hist_prova=194391920&pag_voltar=otacka
 
Declaração de matriz 
 
Declaração de função 
 
Alocação estática de memória 
 
Declaração de vetor 
 
Alocação dinâmica de memória 
Respondido em 19/05/2020 22:06:02 
 
 
Explicação: 
Se for necessário liberar a memória ocupada por essas variáveis, é preciso 
recorrer à função free. 
A função free desaloca a porção de memória alocada por malloc. 
A instrução free (ptr) avisa ao sistema que o bloco de bytes apontado por ptr está 
disponível para reciclagem. 
 
 
 
 
 2a Questão 
 
 Considere uma lista duplamente encadeada não circular em que 
 
struct nodupla { 
 int dado; 
 struct nodupla *dlink; // aponta p/ o nó à direita 
 struct nodupla *elink; // aponta p/ o nó à esquerda 
 }; 
 
sendo nodupla *p; //ponteiro para o início da lista 
 
 A opção que corretamente mostra as instruções para inserir um valor no início 
da lista apontada por p é : 
 
 
 
 nodupla *novo; 
 
 novo = new nodupla; 
 novo.dado = valor; 
 novo.dlink = p; 
 novo.elink = NULL; 
 if (p != NULL) 
 p.elink = novo; 
 p = novo; 
 
 
n nodupla *novo; 
 
 novo = new nodupla; 
 novo->dado = valor; 
 novo->elink = NULL; 
 if (p != NULL) 
 p->elink = novo; 
 p = novo; 
 
 
 
 nodupla *novo; 
 
 novo = new nodupla; 
 novo->dado = valor; 
 novo->dlink = p; 
 novo->elink = NULL; 
 if (p != NULL) 
 p->elink = novo; 
 p = novo; 
 
 
 nodupla *novo; 
 
 novo = new nodupla; 
 novo->dado = valor; 
 novo->dlink = p; 
 novo->elink = NULL; 
 p->elink = novo; 
 p = novo; 
 
 
n 
 
 nodupla *novo; 
 
 novo = new nodupla; 
 novo->dado = valor; 
 novo->dlink = p; 
 if (p != NULL) 
 p->elink = novo; 
 p = novo; 
Respondido em 19/05/2020 22:06:08 
 
 
Gabarito 
Coment. 
 
 
 
 
 3a Questão 
 
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. 
 
Existem várias formas de apresentação de listas lineares, como listas 
circulares e as matrizes, que são formas exclusivas das listas de alocação 
encadeada. 
 
Em uma lista linear com alocação 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. 
 
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. 
 
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. 
Respondido em 19/05/2020 22:06:14 
 
 
Explicação: 
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.=➔ 
FALSO =➔ Ela possui apenas uma entrada, chamada de topo, a partir da qual 
os dadosentram e saem dela. Exemplos de pilhas são: pilha de pratos, pilha de 
livros, pilhade alocação de variáveis da memória, etc. Uma fila é uma lista linear 
do tipo FIFO - First In First Out, o primeiro elemento a entrar será o primeiro a 
sair 
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.=➔ FALSO 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881810037&cod_hist_prova=194392631&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881810037&cod_hist_prova=194392631&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881810037&cod_hist_prova=194392631&pag_voltar=otacka
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. .=➔ FALSO 
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. ===> 
VERDADE 
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. 
===> FALSO ===> Fila, o valor lido, sempre é passado para o começo, ou seja, 
esse valor aponta para as próximas posições, e quando for feita a exclusão, é só 
deletar esse valor do começo. Abaixo uma imagem que representa a Fila 
(FIFO). Pilha, sempre o último valor lido, ficará na `primeira¿ posição da lista, 
dessa forma, quando for feita a exclusão, um auxiliar aponta para a próxima 
posição, e a posição atual, é excluída. Abaixo uma imagem que representa a 
Pilha (LIFO) 
 
 
 
 
 4a Questão 
 
Ao criarmos uma rotina para inserir um dado em umaLISTA de dados 
duplamente encadeada e circular, nos deparamos com as seguintes cuidados: 
 
 
Só poderei inserir no começo ou no fim, mas não no meio. 
 
Só poderei inserir no final da lista e no começo somente se ela estiver 
vazia. 
 
Posso inserir no começo, no meio ou no fim. 
 
Só poderei inserir no final da lista e no começo somente se ela estiver 
cheia. 
 
Só poderei inserir no final da lista e nunca no começo ou no meio. 
Respondido em 19/05/2020 22:06:20 
 
 
Explicação: 
Em uma lista duplamente encadeada circular ou não, podemos inserir ou remover 
de qualquer parte da lista. Não há problema na inserção se a lista estiver vazia. 
 
 
 
 
 5a Questão 
 
Em uma lista linear duplamente encadeada. 
 
 
O ponteiro do "último" nó não é NULL, mas sim aponta de volta para o 
"primeiro" nó da lista. 
 
Cada nó possui um só ponteiro que referencia o próximo nó da lista. 
 
Além do campo relativo ao dado, cada nó possui dois ponteiros. 
 
O ponteiro do "primeiro" nó não é NULL, mas sim aponta de volta para o 
"primeiro" nó da lista, formando um ciclo. 
 
Cada ponteiro possui um só endereço que referencia o primeiro nó da lista. 
Respondido em 19/05/2020 22:06:27 
 
 
Gabarito 
Coment. 
 
 
 
 
 6a Questão 
 
Assinale a alternativa que traz uma afirmação incorreta sobre as diversas 
implementações da estrutura de dados lista. 
 
 
A lista circular é toda lista, independente do tipo de alocação, em que é 
formado um ciclo entre seus elementos. Por exemplo, quando o último 
elemento da lista aponta para o primeiro. 
 
A lista sequencial deve ser implementada com o uso de estruturas de vetor, 
pois essas essas estruturas utilizam o conceito de alocação estática e 
dispõem seus elementos de forma contígua na memória. 
 
Listas encadeadas em geral são preferíveis em relação às listas sequenciais, 
especialmente por serem mais eficientes e sempre utilizarem menos espaço 
de armazenamento na memória. 
 
A lista simplesmente encadeada é adequada para a resolução de problemas 
em que os elementos da lista devem ser percorridos em apenas uma 
direção. 
 
A estrutura do nó da lista duplamente encadeada deve, obrigatoriamente, 
possuir um ponteiro para o nó anterior e outro para o nó seguinte, 
permitindo movimentação para frente e para trás. 
Respondido em 19/05/2020 22:06:29 
 
 
Explicação: 
Analisando cada item. 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881810037&cod_hist_prova=194392631&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881810037&cod_hist_prova=194392631&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881810037&cod_hist_prova=194392631&pag_voltar=otacka
>> A estrutura do nó da lista duplamente encadeada deve, 
obrigatoriamente, possuir um ponteiro para o nó anterior e outro para o nó 
seguinte, permitindo movimentação para frente e para trás. 
 Afirmativa correta, que segue a definição de lista duplamente 
encadeada. Não marcar o item. 
 >> A lista simplesmente encadeada é adequada para a resolução de 
problemas em que os elementos da lista devem ser percorridos em apenas 
uma direção. 
 
 Afirmativa correta. Em uma lista simplesmente encadeada existe 
ponteiro para o início da lista. Por isso, não dá para percorrer tal lista do fim 
para o início. Nâo marcar o item. 
>> A lista sequencial deve ser implementada com o uso de estruturas de 
vetor, pois essas essas estruturas utilizam o conceito de alocação estática e 
dispõem seus elementos de forma contígua na memória. 
 
 Afirmativa correta. O vetor pode até ser dinâmica, mas usualmente usa 
alocação estática de memória e é o recurso usado na implementação das 
listas sequenciais. Não marcar o item. 
>> A lista circular é toda lista, independente do tipo de alocação, em que é 
formado um ciclo entre seus elementos. Por exemplo, quando o último 
elemento da lista aponta para o primeiro. 
 
 Afirmativa correta. 
>> Listas encadeadas em geral são preferíveis em relação às listas 
sequenciais, especialmente por serem mais eficientes e sempre utilizarem 
menos espaço de armazenamento na memória. 
 Afirmativa falsa porque as listas encadeadas não ocupam menos espaço 
que as listas sequencias. Cada nó de uma lista simplemente encadeada, por 
exemplo, tem um campo de dado e um campo que é ponteiro. 
Marcar esta afirmativa. 
 
 
 
 
 
 7a Questão 
 
São listas que, além de cada elemento indicar o elemento seguinte, também 
indicam aquele que o antecede, ou melhor, cada elemento é ligado a seu sucessor 
e a seu predecessor, possibilitando um caminhamento no sentido início-fim ou no 
sentido oposto (fim-início). O texto acima, sobre Estrutura de Dados, descreve : 
 
 
Listas Duplamente Encadeadas 
 
Árvore 
 
Listas simplesmente encadeadas 
 
Listas Circulares 
 
Grafo 
Respondido em 19/05/2020 22:06:18 
 
 
Explicação: 
O enunciado é a descrição de listas duplamente encadeadas, que terão 2 ponteiros 
em cada nó, um apontando para o nó anterior e outro apontando para o nó 
posterior. 
 
 
 
 
 8a Questão 
 
Os registros também conhecidos como estruturas, são estruturas de dados do tipo 
heterogêneo, ou seja, permitem que valores de tipos diferentes possam ser 
armazenados em uma mesma estrutura. Analisando a estrutura abaixo, a mesma 
pode ser utilizada para qual tipo de estrutura de dados, marque a alternativa 
correta. 
struct nomeRegistro{ 
 int info; 
 struct nomeRegistro* ant; 
 struct nomeRegistro* prox; 
}; 
typedef struct nomeRegistro NOMEREGISTRO; 
 
 
Lista duplamente encadeada 
 
Fila 
 
Pilha 
 
Lista encadeada 
 
Matriz 
Respondido em 19/05/2020 22:06:38 
 
1a Questão 
 
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. 
 
 
t=p->dir; 
p->esq = p->dir; 
p->dir = t; 
 
t=p; 
p->esq = p->dir; 
p->dir = p->esq; 
 
p->esq = p->dir; 
t = p->esq; 
p->dir = t; 
 
p->dir=t; 
p->esq = p->dir; 
p->dir = t; 
 
t=p->dir; 
p->dir = p->esq; 
p->esq = t; 
Respondido em 19/05/2020 22:06:52 
 
 
Explicação: 
O código pedido é: 
t=p->dir; 
p->dir = p->esq; 
p->esq = t; 
 
 
 
 
 2a Questão 
 
Com relação à lista duplamente encadeada, é correto afirmar que : 
 
 
 A lista precisa ter sempre um ponteiro apontando para o 1º. nó 
 
Consome menos memória do que uma lista simplesmente 
encadeada, se tivermos uma mesma aplicação. 
 
A lista pode ser percorrida com igual facilidade para a direita 
ou para a esquerda, pois existem dois ponteiros. 
 
Não pode haver remoções no meio da lista. 
 
Não pode ser vazia. 
Respondido em 19/05/2020 22:06:49 
 
 
Gabarito 
Coment. 
 
 
 
 
 3a Questão 
 
Uma estrutura de dados em lista duplamente encadeada permite na cadeia 
movimentos para 
 
 
frente e para trás, apenas. 
 
frente, apenas. 
 
trás, apenas. 
 
cima e para baixo ou para frente e para trás. 
 
cima e para baixo, apenas. 
Respondido em 19/05/2020 22:07:06 
 
 
Gabarito 
Coment. 
 
 
 
 
 4a Questão 
 
Sobre as estruturas de dados lineares, assinale V ou F: 
I - Em uma pilha, o último elemento a entrar é o primeiro a sair. 
II - Em uma fila, o primeiro elemento a entrar é o último a sair. 
III - Uma lista permite que as inserções possam ser feitas em qualquer lugar 
(posição), mas as remoções, não. 
IV - Em uma lista circular com encadeamento simples, o primeiro elemento 
aponta para o segundo e parao último. 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881815570&cod_hist_prova=194392910&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881815570&cod_hist_prova=194392910&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881815570&cod_hist_prova=194392910&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881815570&cod_hist_prova=194392910&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881815570&cod_hist_prova=194392910&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881815570&cod_hist_prova=194392910&pag_voltar=otacka
V - Para remover um elemento de uma lista duplamente encadeada, deve-se 
alterar o encadeamento dos elementos anterior e próximo ao elemento removido. 
A sequência correta de cima para baixo: 
 
 
V,F,F,F,V 
 
V,F,F,V,F 
 
V,F,V,F,V 
 
F,V,V,F,F 
 
F,F,V,V,V 
Respondido em 19/05/2020 22:07:00 
 
 
Explicação: 
Vamos analisar cada afirmativa. 
Analisando a afirmativa I : Correto, pois a estrutura pilha segue a lógica LIFO. 
 
Analisando a afirmativa II : Falso. Na estrutura de dados fila, o primeiro a entrar 
é o primeiro a sair, pois segue a lógica FIFO. 
 
Analisando a afirmativa III : Falso. Em uma lista tanto as inserções quanto as 
remoções podem ser feitas em qualquer posição. 
 
Analisando a afirmativa IV : Falso. Em uma lista circular, o1o. elemento aponta 
para o segundo elemento, mas o último elemento aponta para o 1º. elemento da 
lista. 
 
Analisando a afirmativa V : Está correta. 
 
Logo, a opção correta é V, F, F, F, V 
 
 
 
 
 5a Questão 
 
 
 Suponha uma listagem mantida com informações sobre um equipamento a ser adquirido por uma 
empresa. A listagem possui as informações sobre de 10 fornecedores, descritas a seguir: 
próximo: um ponteiro para o próximo fornecedor da listagem; 
nome: nome, identificando o fornecedor; 
valor: preço do equipamento no fornecedor; 
anterior: um ponteiro para o fornecedor anterior da listagem. 
Sendo o fornecedor "Z" o quinto elemento desta listagem e "X" e "Y" dois outros fornecedores 
que não pertencem à listagem, com seus respectivos ponteiros "pZ", "pX" e "pY", considere o 
trecho de código abaixo. 
pY->proximo = pX; 
pX->anterior = pY; 
pX->proximo = pZ->proximo; 
pZ->proximo->anterior = pX; 
pZ->proximo = pY; 
pY->anterior = pZ; 
Este trecho de código é usado para inserir na listagem os fornecedores: 
 
 
X, antes do Z, e Y, logo após o Z. 
 
Y, antes do Z, e X, antes do Y. 
 
Y, antes do Z, e X, logo após o Z. 
 
X, logo após o Z, e Y, logo após o X. 
 
Y, logo após o Z, e X, logo após o Y. 
Respondido em 19/05/2020 22:07:13 
 
 
Gabarito 
Coment. 
 
 
 
 
 6a Questão 
 
Em uma lista duplamente encadeada, seus nodos são compostos por campos 
cujos tipos podem ser de diferentes naturezas, entretanto dois de seus campos 
devem ser ponteiros para o mesmo tipo do nodo, são estes os ponteiros ant e 
prox, que apontam, respectivamente, para o nodo anterior e para o próximo nodo. 
Esta característica permite que a estrutura seja percorrida em ambos os sentidos. 
Assim analisando as operações a seguir: 
 
p->ant->prox=p->prox; 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881815570&cod_hist_prova=194392910&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881815570&cod_hist_prova=194392910&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881815570&cod_hist_prova=194392910&pag_voltar=otacka
p->prox->ant=p->ant; 
 
Sendo p um ponteiro que aponta para um dos nodos da lista, pode-se afirmar que: 
 
 
As operações possibilitam a busca de um nodo apontado pelo ponteiro p. 
 
As operações possibilitam o percurso do ponteiro p da direita para 
esquerda. 
 
As operações possibilitam o percurso do ponteiro p da esquerda para 
direita. 
 
As operações removem o nodo apontado pelo ponteiro p. 
 
As operações inserem novo nodo, após o nodo apontado pelo ponteiro p. 
Respondido em 19/05/2020 22:07:19 
 
 
Gabarito 
Coment. 
 
 
 
 
 7a Questão 
 
Observe a struct, definida globalmente, e um trecho de uma função 
que manipula uma Lista Duplamente Encadeada. 
struct listaDE 
{ 
 int info; 
 struct listaDE* ant; 
 struct listaDE* prox; 
}; 
... 
listaDE* novo = new listaDE; 
novo->info = valor; 
novo->prox = LISTA; 
novo->ant = NULL; 
Assinale a alternativa que apresenta o protótipo dessa função 
 
 
listaDE *remove(listaDE *LISTA, int valor); 
 
listaDE *insereFim(listaDE *LISTA, int valor); 
 
listaDE *busca (listaDE *LISTA, int valor); 
 
void exibeIpF(listaDE *LISTA); 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881815570&cod_hist_prova=194392910&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881815570&cod_hist_prova=194392910&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881815570&cod_hist_prova=194392910&pag_voltar=otacka
 
listaDE *insereInicio(listaDE *LISTA, int valor); 
Respondido em 19/05/2020 22:07:24 
 
 
Gabarito 
Coment. 
 
 
 
 
 8a Questão 
 
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 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ó. 
 
Em uma lista duplamente encadeada, cada nó aponta para um nó enquanto 
a lista simplesmente encadeada aponta para mais de um nó. 
 
 
1a Questão 
 
Uma estrutura de dados em lista duplamente encadeada permite na cadeia 
movimentos para: 
 
 
Para frente e para trás, apenas. 
 
Para frente, apenas. 
 
Para cima e para baixo ou para frente e para trás. 
 
Para trás, apenas. 
 
Para cima e para baixo, apenas. 
Respondido em 19/05/2020 22:07:40 
 
 
Explicação: 
A resposta é simples assim. 
 
 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881815570&cod_hist_prova=194392910&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881815570&cod_hist_prova=194392910&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881815570&cod_hist_prova=194392910&pag_voltar=otacka
 
 2a Questão 
 
Em uma lista duplamente encadeada, seus nodos são compostos por 
campos cujos tipos podem ser de diferentes naturezas, entretanto dois de 
seus campos devem ser ponteiros para o mesmo tipo do nodo, são estes os 
ponteiros ant e prox, que apontam respectivamente para o nodo anterior e 
para o próximo nodo. Esta característica permite que a estrutura seja 
percorrida em ambos os sentidos. Assim analisando as operações a seguir: 
p->ant->prox=p->prox; 
p->prox->ant=p->ant; 
 
 Sendo p um ponteiro que aponta para um dos nodos da lista, pode-se 
afirmar que: 
 
 
As operações removem o nodo apontado pelo ponteiro p. 
 
As operações possibilitam a busca de um nodo apontado pelo ponteiro p. 
 
As operações inserem novo nodo, após o nodo apontado pelo ponteiro p. 
 
As operações possibilitam o percurso do ponteiro p da direita para 
esquerda. 
 
As operações possibilitam o percurso do ponteiro p da esquerda para 
direita. 
Respondido em 19/05/2020 22:08:17 
 
 
 
 
 3a QuestãoEm uma lista linear duplamente encadeada. 
 
 
O ponteiro do "primeiro" nó não é NULL, mas sim aponta de volta para o 
"primeiro" nó da lista, formando um ciclo. 
 
O ponteiro do "último" nó não é NULL, mas sim aponta de volta para o 
"primeiro" nó da lista. 
 
Cada nó possui um só ponteiro que referencia o próximo nó da lista. 
 
Cada ponteiro possui um só endereço que referencia o primeiro nó da lista. 
 
Além do campo relativo ao dado, cada nó possui dois ponteiros. 
Respondido em 19/05/2020 22:07:27 
 
 
Gabarito 
Coment. 
 
 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881821777&cod_hist_prova=194393215&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881821777&cod_hist_prova=194393215&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881821777&cod_hist_prova=194393215&pag_voltar=otacka
 
 
 4a Questão 
 
Geralmente em algumas situações é necessário fazer a desalocação do espaço 
utilizado na memória. Porém, isso depende de como a reserva de uma quantidade 
de espaço de memória é feita, pois em alguns casos, o próprio compilador faz a 
desalocação. Quando o compilador não faz esta desalocação a memória foi 
reservada utilizando______. 
 
 
Declaração de função 
 
Declaração de matriz 
 
Alocação dinâmica de memória 
 
Alocação estática de memória 
 
Declaração de vetor 
Respondido em 19/05/2020 22:07:57 
 
 
Explicação: 
Se for necessário liberar a memória ocupada por essas variáveis, é preciso 
recorrer à função free. 
A função free desaloca a porção de memória alocada por malloc. 
A instrução free (ptr) avisa ao sistema que o bloco de bytes apontado por ptr está 
disponível para reciclagem. 
 
 
 
 
 5a Questão 
 
Ao criarmos uma rotina para inserir um dado em uma LISTA de dados 
duplamente encadeada e circular, nos deparamos com as seguintes cuidados: 
 
 
Só poderei inserir no começo ou no fim, mas não no meio. 
 
Só poderei inserir no final da lista e nunca no começo ou no meio. 
 
Posso inserir no começo, no meio ou no fim. 
 
Só poderei inserir no final da lista e no começo somente se ela estiver 
vazia. 
 
Só poderei inserir no final da lista e no começo somente se ela estiver 
cheia. 
Respondido em 19/05/2020 22:08:10 
 
 
Explicação: 
Em uma lista duplamente encadeada circular ou não, podemos inserir ou remover 
de qualquer parte da lista. Não há problema na inserção se a lista estiver vazia. 
 
 
 
 
 6a Questão 
 
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. 
 
Existem várias formas de apresentação de listas lineares, como listas 
circulares e as matrizes, que são formas exclusivas das listas de alocação 
encadeada. 
 
Em uma lista linear com alocação 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. 
 
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. 
Respondido em 19/05/2020 22:07:50 
 
 
Explicação: 
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.=➔ 
FALSO =➔ Ela possui apenas uma entrada, chamada de topo, a partir da qual 
os dadosentram e saem dela. Exemplos de pilhas são: pilha de pratos, pilha de 
livros, pilhade alocação de variáveis da memória, etc. Uma fila é uma lista linear 
do tipo FIFO - First In First Out, o primeiro elemento a entrar será o primeiro a 
sair 
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.=➔ FALSO 
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. .=➔ FALSO 
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. ===> 
VERDADE 
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. 
===> FALSO ===> Fila, o valor lido, sempre é passado para o começo, ou seja, 
esse valor aponta para as próximas posições, e quando for feita a exclusão, é só 
deletar esse valor do começo. Abaixo uma imagem que representa a Fila 
(FIFO). Pilha, sempre o último valor lido, ficará na `primeira¿ posição da lista, 
dessa forma, quando for feita a exclusão, um auxiliar aponta para a próxima 
posição, e a posição atual, é excluída. Abaixo uma imagem que representa a 
Pilha (LIFO) 
 
 
 
 
 7a Questão 
 
 Considere uma lista duplamente encadeada não circular em que 
 
struct nodupla { 
 int dado; 
 struct nodupla *dlink; // aponta p/ o nó à direita 
 struct nodupla *elink; // aponta p/ o nó à esquerda 
 }; 
 
sendo nodupla *p; //ponteiro para o início da lista 
 
 A opção que corretamente mostra as instruções para inserir um valor no início 
da lista apontada por p é : 
 
 
 nodupla *novo; 
 
 novo = new nodupla; 
 novo->dado = valor; 
 novo->dlink = p; 
 novo->elink = NULL; 
 if (p != NULL) 
 p->elink = novo; 
 p = novo; 
 
 
 nodupla *novo; 
 
 novo = new nodupla; 
 novo->dado = valor; 
 novo->dlink = p; 
 novo->elink = NULL; 
 p->elink = novo; 
 p = novo; 
 
 
n 
 
 nodupla *novo; 
 
 novo = new nodupla; 
 novo->dado = valor; 
 novo->dlink = p; 
 if (p != NULL) 
 p->elink = novo; 
 p = novo; 
 
 
 nodupla *novo; 
 
 novo = new nodupla; 
 novo.dado = valor; 
 novo.dlink = p; 
 novo.elink = NULL; 
 if (p != NULL) 
 p.elink = novo; 
 p = novo; 
 
 
n nodupla *novo; 
 
 novo = new nodupla; 
 novo->dado = valor; 
 novo->elink = NULL; 
 if (p != NULL) 
 p->elink = novo; 
 p = novo; 
 
 
Respondido em 19/05/2020 22:07:43 
 
 
Gabarito 
Coment. 
 
 
 
 
 8a Questão 
 
Assinale a alternativa que traz uma afirmação incorreta sobre as diversas 
implementações da estrutura de dados lista. 
 
 
A lista circular é toda lista, independente do tipo de alocação, em que é 
formado um ciclo entre seus elementos. Por exemplo, quando o último 
elemento da lista aponta para o primeiro. 
 
A estrutura do nó da lista duplamente encadeada deve, obrigatoriamente, 
possuir um ponteiro para o nó anterior e outro para o nó seguinte, 
permitindo movimentação para frente e para trás. 
 
Listas encadeadas em geral são preferíveis em relação às listas sequenciais, 
especialmente por serem mais eficientes e sempre utilizarem menos espaço 
de armazenamento na memória. 
 
A lista sequencial deve ser implementada com o uso de estruturas de vetor, 
pois essas essas estruturas utilizam o conceito de alocação estática e 
dispõem seus elementos de forma contígua na memória. 
 
A lista simplesmente encadeada é adequada para a resolução de problemas 
em que os elementos da lista devem ser percorridos em apenas uma 
direção. 
Respondido em 19/05/2020 22:07:49 
 
 
Explicação:Analisando cada item. 
>> A estrutura do nó da lista duplamente encadeada deve, 
obrigatoriamente, possuir um ponteiro para o nó anterior e outro para o nó 
seguinte, permitindo movimentação para frente e para trás. 
 Afirmativa correta, que segue a definição de lista duplamente 
encadeada. Não marcar o item. 
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881821777&cod_hist_prova=194393215&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881821777&cod_hist_prova=194393215&pag_voltar=otacka
http://simulado.estacio.br/bdq_simulados_exercicio_preview.asp?cod_prova=3881821777&cod_hist_prova=194393215&pag_voltar=otacka
 >> A lista simplesmente encadeada é adequada para a resolução de 
problemas em que os elementos da lista devem ser percorridos em apenas 
uma direção. 
 
 Afirmativa correta. Em uma lista simplesmente encadeada existe 
ponteiro para o início da lista. Por isso, não dá para percorrer tal lista do fim 
para o início. Nâo marcar o item. 
>> A lista sequencial deve ser implementada com o uso de estruturas de 
vetor, pois essas essas estruturas utilizam o conceito de alocação estática e 
dispõem seus elementos de forma contígua na memória. 
 
 Afirmativa correta. O vetor pode até ser dinâmica, mas usualmente usa 
alocação estática de memória e é o recurso usado na implementação das 
listas sequenciais. Não marcar o item. 
>> A lista circular é toda lista, independente do tipo de alocação, em que é 
formado um ciclo entre seus elementos. Por exemplo, quando o último 
elemento da lista aponta para o primeiro. 
 
 Afirmativa correta. 
>> Listas encadeadas em geral são preferíveis em relação às listas 
sequenciais, especialmente por serem mais eficientes e sempre utilizarem 
menos espaço de armazenamento na memória. 
 Afirmativa falsa porque as listas encadeadas não ocupam menos espaço 
que as listas sequencias. Cada nó de uma lista simplemente encadeada, por 
exemplo, tem um campo de dado e um campo que é ponteiro. 
Marcar esta afirmativa.

Mais conteúdos dessa disciplina