Logo Passei Direto
Buscar

Estruturas de Dados

Ferramentas de estudo

Questões resolvidas

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

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

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

É um exemplo de TAD Não Linear:


Grafos
Pilhas
Filas
Filas de Prioridade
Listas

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

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

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

O que é estrutura de dados?
É um conjunto de técnicas de programação.
É uma forma determinada de armazenamento de dados em um banco de dados.
É uma sequência finita de instruções bem definidas e não ambíguas, cada uma das quais devendo ser executadas mecânica ou eletronicamente em um intervalo de tempo finito e com uma quantidade de esforço finita.
É um conjunto de comandos para uma tarefa específica referenciada por um nome no algoritmo principal, retornando um determinado valor no seu próprio nome.
É um modo particular de armazenamento e organização de dados em um computador de modo que possam ser usados eficientemente.

Assinale a alternativa correta sobre tipos abstratos de dados:
Um tipo abstrato de dados é um modo particular de armazenamento e organização de dados em um computador de modo que possam ser usados eficientemente.
É fundamental que os tipos abstratos de dados proponham um conjunto eficiente de algoritmos para realização de suas operações.
Um tipo abstrato de dados deve sempre ser representado por meio dos recursos específicos de uma linguagem de programação.
Um tipo abstrato de dados é composto por um modelo de dados e um conjunto de operadores definidos sobre esses dados.
Um tipo abstrato de dados descreve, além do que se pode fazer com os dados, como as operações serão efetivamente implementadas.

Considere o trecho de um programa escrito em C++ : long func1 (int n1) { int ft=1, i = 1; while ( i <= n1) { ft *= i; i++; } return ft; } main() { cout << func1 (5); }
Marque a opção correta que mostra o que é impresso na tela.
60
5
1
120
24

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 a função Adivinhe , n = 4 e que X é formado pela sequência "algoritmo". Assinale a opção que corretamente mostra o vetor Y ao fim da execução da função Adivinhe.
ogla
algo
algor
rogla
Ocorre erro, pois a função, que é do tipo void, não retorna o vetor Y.

Caso uma estrutura homogênea (vetor) seja passada como parâmetro para uma função, então:
Essa passagem pode ser "por valor" ou "por referência"
Todos os valores contidos no vetor são copiados para a função
Essa passagem é "por referência"
Essa passagem é "por valor"
Haverá um erro de compilação, pois vetores não podem ser parâmetros de funções

Uma função possui um valor de retorno inteiro, recebe por valor um inteiro como primeiro parâmetro e por referência um inteiro como segundo parâmetro. Qual das respostas abaixo poderia representar o protótipo dessa função:
int func (int a, int &b);
void func (int &a, int &b);
int func (int &a, int b);
int func (&int, int);
void func (int a, int &b);

No programa abaixo, diga em que área de memória serão alocados os elementos de dados y e r, respectivamente. #include using namespace std; int x, y; float media( float a, float b ) { float tmp; tmp = (a + b ) / 2.0; return ( tmp ); } int main() { float r; cout<< "Informe 2 valores: "; cin>>x>> y; r = media( x, y ); cout<<"
Media = "<< r<<"
"; system ("pause"); }
( ) área de registro / área de dados globais
( ) área de dados globais / área de pilha
( ) área de pilha / área de registro
( ) área de registro / área de pilha
( ) área de dados globais / área de registro

Blocos únicos de códigos que realizam diversas tarefas distintas são de difícil manutenção. Portanto, utiliza-se a técnica da modularização de programas, a fim de facilitar a implementação e a manutenção dos programas. Esta técnica tem como principal elemento:
Os Grafos
As Estruturas de Dados
As Filas
As funções
Os Vetores

#include < iostream > using namespace std; int a,b; void dobro(int x){ //x passado por valor x=2*x; } int triplo(int y){ return 3*y; } void altera(int x, int &y) { 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; }
O que será mostrado na tela pelo programa abaixo ?
4 e 9
2 e 13
9 e 16
4 e 12
2 e 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
o protótipo da função.
o escopo das variáveis do programa.
o tipo dos dados dos parâmetros que são passados à função quando da sua chamada.
o tipo do dado do valor retornado da função para quem a chamou.
o tipo das variáveis que serão utilizadas dentro da função.

Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

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

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

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

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

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

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

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

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

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

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

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

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

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

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

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

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

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

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

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

Questões resolvidas

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

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

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

É um exemplo de TAD Não Linear:


Grafos
Pilhas
Filas
Filas de Prioridade
Listas

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

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

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

O que é estrutura de dados?
É um conjunto de técnicas de programação.
É uma forma determinada de armazenamento de dados em um banco de dados.
É uma sequência finita de instruções bem definidas e não ambíguas, cada uma das quais devendo ser executadas mecânica ou eletronicamente em um intervalo de tempo finito e com uma quantidade de esforço finita.
É um conjunto de comandos para uma tarefa específica referenciada por um nome no algoritmo principal, retornando um determinado valor no seu próprio nome.
É um modo particular de armazenamento e organização de dados em um computador de modo que possam ser usados eficientemente.

Assinale a alternativa correta sobre tipos abstratos de dados:
Um tipo abstrato de dados é um modo particular de armazenamento e organização de dados em um computador de modo que possam ser usados eficientemente.
É fundamental que os tipos abstratos de dados proponham um conjunto eficiente de algoritmos para realização de suas operações.
Um tipo abstrato de dados deve sempre ser representado por meio dos recursos específicos de uma linguagem de programação.
Um tipo abstrato de dados é composto por um modelo de dados e um conjunto de operadores definidos sobre esses dados.
Um tipo abstrato de dados descreve, além do que se pode fazer com os dados, como as operações serão efetivamente implementadas.

Considere o trecho de um programa escrito em C++ : long func1 (int n1) { int ft=1, i = 1; while ( i <= n1) { ft *= i; i++; } return ft; } main() { cout << func1 (5); }
Marque a opção correta que mostra o que é impresso na tela.
60
5
1
120
24

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 a função Adivinhe , n = 4 e que X é formado pela sequência "algoritmo". Assinale a opção que corretamente mostra o vetor Y ao fim da execução da função Adivinhe.
ogla
algo
algor
rogla
Ocorre erro, pois a função, que é do tipo void, não retorna o vetor Y.

Caso uma estrutura homogênea (vetor) seja passada como parâmetro para uma função, então:
Essa passagem pode ser "por valor" ou "por referência"
Todos os valores contidos no vetor são copiados para a função
Essa passagem é "por referência"
Essa passagem é "por valor"
Haverá um erro de compilação, pois vetores não podem ser parâmetros de funções

Uma função possui um valor de retorno inteiro, recebe por valor um inteiro como primeiro parâmetro e por referência um inteiro como segundo parâmetro. Qual das respostas abaixo poderia representar o protótipo dessa função:
int func (int a, int &b);
void func (int &a, int &b);
int func (int &a, int b);
int func (&int, int);
void func (int a, int &b);

No programa abaixo, diga em que área de memória serão alocados os elementos de dados y e r, respectivamente. #include using namespace std; int x, y; float media( float a, float b ) { float tmp; tmp = (a + b ) / 2.0; return ( tmp ); } int main() { float r; cout<< "Informe 2 valores: "; cin>>x>> y; r = media( x, y ); cout<<"
Media = "<< r<<"
"; system ("pause"); }
( ) área de registro / área de dados globais
( ) área de dados globais / área de pilha
( ) área de pilha / área de registro
( ) área de registro / área de pilha
( ) área de dados globais / área de registro

Blocos únicos de códigos que realizam diversas tarefas distintas são de difícil manutenção. Portanto, utiliza-se a técnica da modularização de programas, a fim de facilitar a implementação e a manutenção dos programas. Esta técnica tem como principal elemento:
Os Grafos
As Estruturas de Dados
As Filas
As funções
Os Vetores

#include < iostream > using namespace std; int a,b; void dobro(int x){ //x passado por valor x=2*x; } int triplo(int y){ return 3*y; } void altera(int x, int &y) { 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; }
O que será mostrado na tela pelo programa abaixo ?
4 e 9
2 e 13
9 e 16
4 e 12
2 e 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
o protótipo da função.
o escopo das variáveis do programa.
o tipo dos dados dos parâmetros que são passados à função quando da sua chamada.
o tipo do dado do valor retornado da função para quem a chamou.
o tipo das variáveis que serão utilizadas dentro da função.

Prévia do material em texto

Podemos dizer que estrutura de dados é:
		
	 
	O que permite o armazenamento e a recuperação de dados independentemente de seu conteúdo.
	
	É a saída, que satisfaz a quaisquer restrições impostas pelo problema, necessária para se calcular uma solução do problema.
	 
	O meio para armazenar e organizar dados com o objetivo de facilitar o acesso e as modificações.
	
	Uma sequência de passos computacionais que transforma uma entrada em uma saída previamente determinada.
	
	A entrada, que satisfaz a quaisquer restrições impostas pelo problema, necessária para se calcular uma solução do problema.
	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
	
	fila
	
	pilha
	A forma correta para imprimir o valor do último elemento de um vetor v com n posições é:
		
	 
	cout << v[n-1];
	
	cin >> v[-1];
	
	cout << v[n+1];
	 
	cout << v[n];
	
	cout << v[ultimo];
	
	
	
	          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 ?
		
	
	 Lista
	
	Fila
	 
	Grafo
	
	              Árvore
	
	             Pilha
	É um exemplo de TAD Não Linear:
		
	 
	Grafos
	
	Listas
	
	Pilhas
	
	Filas
	 
	Filas de Prioridade
	Respondido em 18/03/2021 06:29:14
	
Explicação: Um grafo é um tipo de dados abstrato não linear
	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
	 
	Fila Sequencial
	
	Lista Encadeada
	 
	Lista Sequencial
	
	Pilha Encadeada
	
	
	Qual estrutura de dados é mais adequada para armazenar a estrutura do diretório do sistema de arquivos de um sistema operacional?
		
	
	Lista
	 
	Árvore
	
	Grafo
	
	Pilha
	
	Fila
	Respondido em 18/03/2021 06:31: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.
	
	
	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.
		
	 
	árvore
	
	fila
	
	lista
	
	grafo
	
	pilha
	A forma correta para imprimir o valor do último elemento de um vetor v com n posições é:
		
	
	cout << v[n+1];
	
	cin >> v[-1];
	 
	cout << v[n-1];
	
	cout << v[ultimo];
	
	cout << v[n];
	É um exemplo de TAD Não Linear:
		
	
	Filas de Prioridade
	 
	Grafos
	
	Filas
	
	Pilhas
	
	Listas
	Respondido em 03/05/2021 06:05:05
	
Explicação: Um grafo é um tipo de dados abstrato não linear
	Estão entre algumas das possíveis formas de estruturas de dados:
		
	
	Listas, vetores, cin
	 
	Árvores binárias, pilhas, vetores
	
	cout, Funções, vetores
	
	Grafos, funções, fila
	
	Árvores binárias, pilhas, algoritmos
	Respondido em 03/05/2021 06:05:07
	
Explicação:
	
	Árvores binárias, pilhas, vetores
	Verdadeiro.  
	
	Grafos, funções, fila
	Falso.  Funções não são estruturas de dados. Funções são módulos dos programas.
	
	Árvores binárias, pilhas, algoritmos
	FAlso. Algoritmos não são estrutura de dados.
	
	Listas, vetores, cin
	Falso.  cin não é estrutura de dados.  É usado para fazer entrada de dados.
	
	cout, Funções, vetores
Falso.  Funções e cout não são estrutura de dados.
	    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 ?
		
	
	              Árvore
	
	             Pilha
	 
	Grafo
	
	 Lista
	
	Fila
	
	
	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, III, IV e VI são afirmativas verdadeiras
	
	II, IV e V são afirmativas verdadeiras
	
	I, II, III e VI são afirmativas verdadeiras
	
	II, IV, V e VI são afirmativas verdadeiras
	
	I, II e V são afirmativas verdadeiras
	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 II e IV estão corretas.
	
	Todas as alternativas estão corretas.
	 
	As alternativas I e II estão corretas
	
	As alternativas I e III estão corretas.
	
	As alternativas III e IV estão corretas.
	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 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.
	
	Após a impressão dos valores pela ordem teremos duas filas.
	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.
	 
	O meio para armazenar e organizar dados com o objetivo de facilitar o acesso e as modificações.
	
	É a saída, que satisfaz a quaisquer restrições impostas pelo problema, necessária para se calcular uma solução do problema.
	
	Uma sequência de passos computacionais que transforma uma entrada em uma saída previamente determinada.
	
	O que permite o armazenamento e a recuperação de dados independentemente de seu conteúdo.
	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
	
	fila
	
	pilha
	
	grafo
	
	árvore
	           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.
		
	
	          Pilha
	
	Grafo
	
	         Fila
	 
	Lista
	
	Árvore
	
	
		
          Questão
	
	
	Diferentes tipos de estrutura de dados são adequadas a diferentes tipos de aplicação e algumas são altamente especializadas, destinando-se a algumas tarefas específicas.Dessa forma a definição de Estrutura de Dados está expressa na alternativa:
		
	
	É um modo de utilização de dados nos programas de computador.
	 
	É um modo particular de armazenamento e organização de dados em um computador de modo que possam ser usados de modo eficiente.
	
	É um modo de distribuição e organização de dados em uma rede de computador de modo que possam ser usados de modo eficiente.
	
	São os nomes dados as variáveis na montagem de uma rotina.
	
	É um modo de deleção de dados em um computador.
	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
	
	grafo
	 
	árvore
	
	lista
	
	
	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 I e III estão corretas.
	
	As alternativas III e IV estão corretas.
	
	As alternativas II e IV estão corretas.
	
	Todas as alternativas estão corretas.
	Estão entre algumas das possíveis formas de se estruturar dados:
		
	
	Algoritmos, lista ordenada, vetores.
	
	Lista encadeada, vetores, algoritmos.
	
	Grafos, lista ordenada, algoritmos.
	 
	Grafos, lista ordenada, vetores.
	
	Grafos, algoritmos, fila.
	
	
	O que é estrutura de dados?
		
	
	É um conjunto de comandos para uma tarefa específica referenciada por um nome no algoritmo principal, retornando um determinado valor no seu próprio nome.
	
	É um conjunto de técnicas de programação.
	
	É uma forma determinada de armazenamento de dados em um banco de dados.
	
	É uma sequência finita de instruções bem definidas e não ambíguas, cada uma das quais devendo ser executadas mecânica ou eletronicamente em um intervalo de tempo finito e com uma quantidade de esforço finita.
	 
	É um modo particular de armazenamento e organização de dados em um computador de modo que possam ser usados eficientemente.
	Respondido em 03/05/2021 06:06:22
	
Explicação:
Estrutura de dados não é banco de dados . Estrutura de dados não é Tipo de dados.
Estrutura de dados não é ¿ É um conjunto de comandos para uma tarefa específica referenciada por um nome no algoritmo principal, retornando um determinado valor no seu próprio nome¿ que no caso, fala de função.
 
Estrutura de dados não é ¿ É uma sequência finita de instruções bem definidas e não ambíguas, cada uma das quais devendo ser executadas mecânica ou eletronicamente em um intervalo de tempo finito e com uma quantidade de esforço finita.¿    Esta definição é de algoritmo.
 
Portanto, Estrutura de Dados é ¿ É um modo particular de armazenamento e organização de dados em um computador de modo que possam ser usados eficientemente.¿
	Assinale a alternativa correta sobre tipos abstratos de dados:
		
	 
	Um tipo abstrato de dados é composto por um modelo de dados e um conjunto de operadores definidos sobre esses dados.
	
	Um tipo abstrato de dados é um modo particular de armazenamento e organização de dados em um computador de modo que possam ser usados eficientemente.
	
	É fundamental que os tipos abstratos de dados proponham um conjunto eficiente de algoritmos para realização de suas operações.
	
	Um tipo abstrato de dados deve sempre ser representado por meio dos recursos específicos de uma linguagem de programação.
	
	Um tipo abstrato de dados descreve, além do que se pode fazer com os dados, como as operações serão efetivamente implementadas.
	Considere o trecho de um programa escrito em C++ : 
long func1 (int n1) {
   int ft=1, i = 1;
   while ( i <= n1) {
         ft *= i;
         i++;
   }
   return ft;
}
main() {
    cout << func1 (5);
}
Marque a opção correta que mostra o que é impresso na tela.
		
	
	60
	
	1
	
	5
	
	24
	 
	120
	Respondido em 18/03/2021 06:35:09
	
Explicação:
Acompanhando passo a passo :
long func1 (int n1) {
   int ft=1, i = 1;
   while ( i <= n1) {
         ft *= i;
         i++;
   }
   return ft;
}
main() {
    cout << func1 (5);
}
Passo a passo :
1) Começando a execução pela main ... func1 é chamada e é passado o valor 5.
2) Entrando na função, temos que n1 recebeu 5, i recebeu 1  e ft recebeu 1.
3) Ainda na função func1 ...   teste do loop ... 1 <= 5 ? Sim.
    Então, ft recebe 1*1, que dá 1 e i passa a valer 2.  Acompanhar na tabela desde o início da execução de func1
	ft
	i
	i <= n1
	1
	1
	1 <= 5 / Sim
	1
	2
	2 <= 5 ? Sim
	2
	3
	3 <= 5 ? sim
	6
	4
	4 <= 5 ? Sim
	24
	5
	 5 <= 5 ? Sim
	120
	6
	6 <= 5 ? FAlso
SErá retornado o valor de ft que é 120.  Volta-se então para a main e o valor 120 é impresso.
	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);
	
	float volume (float ; float ; float);
	
	void volume (float , float);
	
	void volume (float, float, float &);
	Respondido em 18/03/2021 06:39:01
	
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.
	Informe qual deverá ser a saída do programa abaixo:
#include 
void func(int *x)
{
 do{
 cout << *x << " ";
 (*x)--;
 }while(*x>0);
}
main()
{
 int x=5;
 func(&x);
 cout << x;
 system("pause");
}
		
	
	5 3 4 2 1 4
	 
	5 4 3 2 1 5
	
	5 4 3 2 1 6
	
	5 3 4 2 1 0
	 
	5 4 3 2 1 0
	Caso uma estrutura homogênea (vetor) seja passada como parâmetro para uma função, então:
		
	
	Todos os valores contidos no vetor são copiados para a função
	 
	Essa passagem pode ser "por valor" ou "por referência"
	
	Essa passagem é "por valor"
	 
	Essa passagem é "por referência"
	
	Haverá um erro de compilação, pois vetores não podem ser parâmetros de funções
	Respondido em 18/03/2021 06:43:36
	
Explicação:
Quando o vetor é um parâmetro de uma função ele é sempre passado por referência, não havendo outra possibilidade. Não ocorrerá erro, se o vetor for devidamente passado para a funçã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; n = 5; dobro(n); cout << n; return 0; }
		
	 
	5
	
	20
	
	10
	
	Haverá um erro de compilação
	
	0
	
	
	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 18/03/202106:46:35
	
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
	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:
		
	
	Passagem por valor.
	
	Envio de valor.
	
	Registro.
	
	Envio de inteiro.
	 
	Ponteiros.
	
	
	Sobre funções, é correto afirmar:
		
	
	Não devem conter variáveis locais em seu código.
	 
	São blocos de instruções que são executados quando são chamadas em alguma parte do programa.
	
	Obrigatoriamente devem retornam algum valor.
	
	Obrigatoriamente devem possuir parâmetros.
	
	Não podem ser chamadas dentro de outras funções.
	Respondido em 18/03/2021 06:48:21
	
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.
	Considere a função Adivinhe , n  =  4 e que X é formado pela sequência "algoritmo".  Assinale a opção que corretamente mostra o vetor Y ao fim da execução da função  Adivinhe.
void Adivinhe (char X[ ], char Y [ ], int n)  {
    int i, j;
    j = 0;
    for ( i = n; i >= 0; i--)
    {
        Y[j] = X[i];
        j++;
    }
    Y[j] = '\0';
}
		
	
	Ocorre erro, pois a função, que é do tipo void, não retorna o vetor Y.
	
	algo
	
	ogla
	
	algor
	 
	rogla
	Respondido em 03/05/2021 06:06:44
	
Explicação:
Não há outra opção, pois a questão é objetiva. Vejamos passo a passo :
X armazena "algoritmo" e Y será gerado.
	j
	i
	0
	4
	1
	3
	2
	2
	3
	1
	4
	0
	5
	 -1 ... falha o teste i >= 0
A cada rodada do loop temos, considerando os valores de j e i acima, as seguintes atribuições :
Y[0] recebe X[4], que é 'r'
Y[1] recebe X[3], que é 'o'
Y[2] recebe X[2], que é 'g'
Y[3] recebe X[1], que é 'l'
Y[4] recebe X[0], que é 'a'
Y[5] recebe '\0'
Daí, Y será rogla
	Caso uma estrutura homogênea (vetor) seja passada como parâmetro para uma função, então:
		
	
	Haverá um erro de compilação, pois vetores não podem ser parâmetros de funções
	
	Essa passagem pode ser "por valor" ou "por referência"
	 
	Essa passagem é "por referência"
	
	Essa passagem é "por valor"
	
	Todos os valores contidos no vetor são copiados para a função
	Respondido em 03/05/2021 06:06:50
	
Explicação:
Quando o vetor é um parâmetro de uma função ele é sempre passado por referência, não havendo outra possibilidade. Não ocorrerá erro, se o vetor for devidamente passado para a função.
	Uma função possui um valor de retorno inteiro, recebe por valor um inteiro como primeiro parâmetro e por referência um inteiro como segundo parâmetro. Qual das respostas abaixo poderia representar o protótipo dessa função:
		
	
	void func (int &a, int &b);
	 
	int func (int a, int &b);
	
	void func (int a, int &b);
	
	int func (&int, int);
	
	int func (int &a, int b);
	
	
	Assinale a opção certa.
 Quando não se escreve o protótipo de uma função ...
		
	
	A definição da função deverá ser escrita, obrigatoriamente, após o programa principal.
	
	A chamada da função não poderá ser feita em qualquer hipótese.
	 
	É preciso definir a função antes do programa principal.
	
	A chamada da função poderá ser feita em qualquer hipótese.
	
	O programa não funcionará de forma alguma.
	No programa abaixo, diga em que área de memória serão alocados os elementos de dados y e r, respectivamente.
#include
using namespace std;
int x, y;
float media( float a, float b )
{ float tmp;
tmp = (a + b ) / 2.0;
return ( tmp );
}
int main()
{
float r;
cout<<"Informe 2 valores: ";
cin>>x>> y;
r = media( x, y );
cout<<"\nMedia = "<< r<<"\n";
system ("pause");
}
		
	
	( ) área de dados globais / área de registro
	 
	( ) área de dados globais / área de pilha
	
	( ) área de pilha / área de registro
	
	( ) área de registro / área de dados globais
	
	( ) área de registro / área de pilha
	Considere o trecho de um programa escrito em C++ : 
long func1 (int n1) {
   int ft=1, i = 1;
   while ( i <= n1) {
         ft *= i;
         i++;
   }
   return ft;
}
main() {
    cout << func1 (5);
}
Marque a opção correta que mostra o que é impresso na tela.
		
	
	60
	
	5
	 
	120
	
	24
	
	1
	 
		
	
	O programa executa perfeitamente, mas não mostra o valor da media já que esta função não foi chamada na função main( ).
	
	O programa não executa corretamente, pois os protótipos estão fora da ordem em que as funções são descritas.
	
	O programa não executa corretamente, pois 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 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.
	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:
		
	
	As Filas
	
	Os Vetores
	 
	As funções
	
	As Estruturas de Dados
	
	Os Grafos
	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 9
	 
	2 e 13
	
	9 e 16
	
	4 e 12
	
	2 e 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
		
	
	o protótipo da função.
	 
	o tipo do dado do valor retornado da função para quem a chamou.
	
	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 escopo das variáveis do programa.
	Respondido em 03/05/2021 06:07:46
	
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.
	Considera a FUNÇÃO abaixo:
void inverte(int &x, int &y)
{ int aux = x;
x = y;
y = aux; }
Quais valores serão impressos na tela quando o seguinte programa principal for executado?
int main()
{ int a = 18, b = 28;
inverte(a, b);
cout << a <<" e "<< b;
return 0; }
		
	
	28 e 08
	
	08 e 18
	
	18 e 28
	 
	28 e 18
	
	18 e 18
	Respondido em 03/05/2021 06:07:51
	
Explicação:
Teste de Mesa
a      b      x      y      aux
18    28                          //Na main()
18    28    18    28          //Quando a função é chamada x, recebe o endereço de a e y, o de b. Logo acessam os mesmos endereços
18    28    18    28    18  //Na função, aux é declarada e inicializada com o valor de x
18    28    28    28    18   //Na função x  =  y; Deixará x com valor 28
18    28    28    18    18   //Na função y = aux; Deixará y com valor 18
 
Como a função é void, nada retorna e nem precisa porque os valores foram trocados pela função misterio(...) que recebeu por passagem por referência.
	
	
	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 03/05/2021 06:07:55
	
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.
	
	
	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;
		
	 
	25 e 15
	
	15 e 15
	
	25 e 25
	
	15 e 25
	
	0 e 5
	Respondido em 03/05/2021 06:07:59
	
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
	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; n = 5; dobro(n); cout << n; return 0; }
		
	
	Haverá um erro de compilação
	
	20
	
	0
	 
	5
	
	10
	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 = 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
	
	Será impresso
Auxiliar = 15
Result = 1000  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 valor
 
 
	 
	Será impresso
Auxiliar = 15
Result = 999  Valor = 85
sendo que z é um  parâmetro passado por referência
	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; }
		
	
	0
	
	10
	
	3
	 
	5
	
	20
	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.
		
	 
	void ordena(int v[], int n){
int i, j, menor, aux;
for (j = 0; j < n-1; j++) {
    for (i = j+1; i < n; i++) {
         if (v[i] < v[j]) {
             aux = v[j];
             v[j] = v[i];
             v[i] = aux;
        }
    }
}
}
	
	void ordena (int v[], int n){
       int i, j, aux;
       for (j = 1; j < n; j++)
           for (i=j; i > 0 && v[i-1]> v[i]; i--){
              aux = v[i-1];
              v[i-1] = v[i];
              v[i] = aux; 
            }
}
	
	int ordena(float v[], float valor, int n){
   for (int i = 0; i < n; i++)
     if (v[i] == valor)
       return i;
   return -1;
}
	 
	int ordena(float v[], float valor, int n) {
 int ini = 0, fim = n-1, meio;
   while (ini >= fim){
     meio = ini/2;
     if (v[meio] == valor)
       return meio; 
     if (valor < v[meio])
       fim = meio -1;
     else
       ini = meio+1;
}
	
	int ordena(float v[], float valor, int n) { 
     int ini = 0, fim = n -1, meio;
    while (ini <= fim){
        meio = (ini + fim)/2;
        if (v[meio] == valor)
              return meio;
        if (valor < v[meio])
             fim = meio -1;
        else
             ini = meio+1;
    }
    return -1;
}
	Respondido em 18/03/2021 06:51:29
	
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!
	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].nota=5.7;
	 
	vet[10].aluno.nota=5.7 ;
	
	aluno.vet[10].nota=5.7;
	
	aluno.vet[10]=5.7;
	
	vet[10]=aluno.5.7;
	
	
	Qual das seguintes estruturas de dados é classificada como heterogênea?
		
	
	Pilha
	 
	Registro
	
	Fila
	
	Loop
	
	Vetor
	Respondido em 18/03/2021 06:53:44
	
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.
	Marque a opção correta, considerando
struct Livro {
int codigo;
float preco;
} liv;
		
	
	liv->preco = 30.70;
	
	Livro.codigo = 12345;
	 
	liv.preco = 30.70;
	
	Livro.liv.codigo = 12345;
	
	Livro->liv.codigo = 12345;
	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;
	
	aluno[10]=6.0;
	
	vet[3].aluno=6.0;
	 
	vet[3].media=6.0;
	
	aluno[3].10=6.0;
	
	
	Marque a afirmativa correta para a "Inserção em lista linear sequencial ordenada".
		
	 
	Consiste em adicionar um valor no vetor, mantendo a ordem existente e ajustando o total de elementos.
	
	Consiste em adicionar um valor no vetor, alterando a ordem existente e ajustando o total de elementos.
	
	É o processo pelo qual um conjunto de dados é colocado em uma ordem crescente ou decrescente.
	
	Consiste em fazer uma busca em um vetor desordenado, dividindo o espaço de busca ao meio e verificando se o dado está no meio ou, antes do meio ou depois do meio.
	
	Consiste em 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 18/03/2021 06:58:07
	
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.
	Pode-se definir uma estrutura heterogêneacomo 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.
		
	
	aluno.vet[10].nota=5.7;
	
	vet[10].aluno.nota=5.7 ;
	
	vet[10]=aluno.5.7;
	 
	vet[10].nota=5.7;
	
	aluno.vet[10]=5.7;
	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).
	
	, (vírgula).
	
	* (asterisco).
	
	& (e comercial ou eitza).
	 
	∙ (ponto).
	Respondido em 18/03/2021 06:58:59
	
Explicação:
Por definição, o operador que permite acessar os campos de uma variável struct é o ponto (.).
	Para consultarmos uma estrutura de dados, normalmente, empregamos um tipo de pesquisa de dados. O trecho de programa a seguir refere-se a uma pesquisa por um elemento único (sua primeira ocorrência), em um conjunto de elementos de dados armazenado em uma estrutura de acesso indexado e aleatório. Selecione a opção correspondente ao algoritmo utilizado, no programa, para a referida pesquisa:
int busca(float v[], float valor, int n) {
int ini = 0, fim = n -1, meio;
while (ini <= fim) {
meio = (ini + fim)/2;
if (v[meio] == valor)  return meio;
if (valor < v[meio]) fim = meio -1;
  else ini = meio+1;
}
return -1;
}
		
	
	pesquisa cadeias indexada
	
	pesquisa de cadeias
	
	pesquisa sequencial
	 
	pesquisa indexada
	 
	pesquisa binária
	Seja a seguinte função de ordenação:
void ordena( int n, int v[])
{
   int i, j, x;
   for (j = 1; j < n; ++j) {
      x = v[j];
      for (i = j-1; i >= 0 && v[i] > x; --i)
         v[i+1] = v[i];
      v[i+1] = x;
   }
}
Pode-se dizer que é uma função de ordenação:
		
	 
	Que utiliza o método inserção e realiza uma ordenação crescente nos elementos do vetor v.
	
	Que utiliza o método inserção e realiza uma ordenação decrescente nos elementos do vetor v.
	
	Que utiliza o método bolha e realiza uma ordenação crescente nos elementos do vetor v.
	 
	Que utiliza o método seleção e realiza uma ordenação decrescente nos elementos do vetor v.
	
	Que utiliza o método seleção e realiza uma ordenação crescente nos elementos do vetor v.
	
		
	
	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-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-1]= vet[j];
         vet[j-1]=aux;      
     }
	Respondido em 18/03/2021 07:06:09
	Em relação à classificação do método de ordenação, assinale abaixo aquele que, durante o processo de ordenação, só usa a memória principal:
		
	
	Ordenação Eficiente
	
	Ordenação Simples Externa
	
	Ordenação Simples
	
	Ordenação Externa
	 
	Ordenação Interna
	Sobre o funcionamento da busca binária, é correto afirmar que dividindo seu vetor em duas metades.
		
	
	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, procure na segunda metade, ou seja, a da direita.
	 
	Se o item for igual ao item que está na metade do vetor, o item foi encontrado.
	
	Se o item for menor que o item que está na metade do vetor, o item foi encontrado.
	
	Se o item for igual ao item que está na metade do vetor, o item não foi encontrado.
	Respondido em 18/03/2021 07:08:41
	
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.
	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
	
	Pesquisa sequencial
	
	Bolha
	 
	Pesquisa binária
	
	
	O seguinte trecho de programa abaixo representa qual tipo de estrutura de ordenação?
void ordenar(float v[], int n) // n é o no. de elementos em v
{
 int i , // índice
 aux, // auxiliar para troca
trocou = true,
fim = n - 1;
while (trocou)
{
    trocou = false; // sinaliza que é falso que trocou
     for (i = 0; i < fim; i++)
     {
       if (v[i] > v[i+1])
       {
         aux = v[i];
         v[i] = v[i+1];
         v[i+1] = aux;
         // sinaliza que é verdadeiro que trocou
         trocou = true;
        } // fim if
    } // fim for
 fim--; // decrementa o fim
} // fim while
} // fim da função
		
	 
	Bublesort
	
	Heapsort
	
	Quicksort
	
	Mergesort
	
	Shellsort
	"Algoritmo de ordenação por trocas  que varre um vetor um certo número de vezes, comparando os elementos vizinhos dois a dois. A cada varredura, se o par de elementos está em ordem crescente, nada é feito, caso contrário os elementos do par são permutados". Esta definição está descrevendo o algoritmo de ordenação conhecido por :
		
	
	QuickSort
	
	MergeSort
	 
	BubbleSort
	
	SelectionSort
	
	InsertionSort
	Respondido em 18/03/2021 07:12:52
	
Explicação:
Das opções apresentadas, as únicas que são ordenações por troca são Bubblesort e Quicksort.
Dessas  duas ordenações, a única que trabalha com duplas de elementos  vizinhos é o Bubblesort. O Quicksort, que está fora do escopo da disciplina, trabalha com pivô.
	O resultado do concurso para o cargo de uma empresa está armazenado em um vetor, que contém em cada um de seus elementos o número de inscrição, o nome e a nota obtida pelo candidato. Este vetor está ordenado pelo número de inscrição. Para realização de uma consulta que, dado um número de inscrição, apresenta o nome e nota do candidato, um programador utilizou um algoritmo de busca que realiza sucessivas divisões no vetor, comparando o número de inscrição procurado com o número de inscrição do candidato posicionado no meio do vetor. Se o candidato posicionado do meio do vetor tiver o número de inscrição igual ao número de inscrição procurado, a busca termina com sucesso. Caso contrário, se candidato posicionado do meio do vetor tiver número de inscrição menor que o procurado, então a busca continua na metade posterior do vetor. E finalmente, se candidato posicionado do meio do vetor tiver número de inscrição maior que o procurado, a busca continua na metade anterior do vetor. O algoritmo utilizado pelo programador trata-se do método denominado busca:
		
	
	randômica.
	
	linear.
	
	por contagem.
	 
	binária.
	
	por comparação.
	Sabendo-se que o método de ordenção bolha ou bubble sort realiza a troca de elementos adjacentes até que todos os elementos de um vetoresteja ordenado. Então, se submetermos a sequencia de inteiros armazenada em um vetor inicialmente na seguinte ordem : 4, 2, 5, 1.
Pode-se dizer que quando o maior elemento do vetor alcançar sua posição final, a ordenação apresentada no vetor é:
		
	 
	2,4,1,5
	
	1,4,2,5
	
	1,2,4,5
	
	4,1,2,5
	
	2,1,4,5
	Marque a afirmativa correta para a "Busca ou pesquisa binária".
		
	 
	Consiste em fazer uma busca em um vetor já ordenado, dividindo o espaço de busca ao meio e verificando se o dado está no meio ou, antes do meio ou depois do meio.
	
	Consiste em adicionar um valor no vetor, alterando a ordem existente e ajustando o total de elementos.
	
	É o processo pelo qual um conjunto de dados é colocado em uma ordem crescente ou decrescente.
	
	Consiste em fazer uma busca em um vetor desordenado, dividindo o espaço de busca ao meio e verificando se o dado está no meio ou, antes do meio ou depois do meio.
	
	Consiste em adicionar um valor no vetor, mantendo a ordem existente e ajustando o total de elementos.
	
	
	Considere as afirmativas a seguir.
I. Uma forma muito simples de fazer uma busca em um vetor consiste em percorrer o vetor, elemento a elemento, para verificar se o elemento procurado é igual a um dos elementos do vetor.
II. A pesquisa sequencial é extremamente simples e eficiente quando o número de elementos do vetor for muito grande.
III. Na pesquisa binária, a cada interação do algoritmo o tamanho do vetor é dividido ao meio.
IV. A pesquisa binária funciona corretamente quanto o conjunto de dados estiver desordenado.
Assinale a alternativa correta.
		
	
	Somente as afirmativas II, III e IV são corretas.
	
	Somente as afirmativas I e II são corretas.
	
	Somente as afirmativas I e IV são corretas.
	
	Somente as afirmativas III e IV são corretas.
	 
	Somente as afirmativas I e III são corretas.
	Respondido em 03/05/2021 06:11:41
	
Explicação:
Analisando cada afirmativa :
I. Uma forma muito simples de fazer uma busca em um vetor consiste em percorrer o vetor, elemento a elemento, para verificar se o elemento procurado é igual a um dos elementos do vetor.
Correto. SEria uma busca sequencial.
II. A pesquisa sequencial é extremamente simples e eficiente quando o número de elementos do vetor for muito grande.
Falso. Se tivermos que procurar um elemento que está no fim do vetor ou que não seja encontrado, o tempo de execução será proporcional ao número de elementos. Então, quanto maior a lista, mais tempo levaremos.
III. Na pesquisa binária, a cada interação do algoritmo o tamanho do vetor é dividido ao meio.
Correto.
IV. A pesquisa binária funciona corretamente quanto o conjunto de dados estiver desordenado.
Falso. Por definição, a busca binária só pode atuar em listas ordenadas.
Logo, apenas as afirmativas I  e   III estão corretas.
	
	
	Entre os diversos algoritmos de pesquisa existentes, certamente os mais famosos são os da pesquisa sequencial e o da pesquisa binária. A busca ou pesquisa sequencial pode ser aplicada em vetores independente destes estarem ordenados, entretanto a busca binária só se aplica em vetores ordenados. Seja o vetor A= {10,35,41,55,69,70,98}, suponha que o número 70 foi pesquisado pelo algoritmo da busca sequencial e também pelo algoritmo da busca binária, ambos algoritmos realizam testes nos elementos do vetor até achar o que procuram ou definirem que o elemento não se encontra no vetor. Sendo assim marque a alternativa que expressa o número de testes realizados pela busca sequencial e o número de testes realizados pela busca binária, respectivamente, até encontrarem o 70.
		
	
	5 e 5
	 
	6 e 2
	
	6 e 4
	
	6 e 1
	
	7 e 1
	
	
	Marque a afirmativa correta para a "Ordenação em Listas Lineares Sequenciais".
		
	 
	É 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 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, 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.
	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 binária
	
	pesquisa cadeias indexada
	
	pesquisa sequencial
	Analise o seguinte trecho de algoritmo de ordenação de dados, cujos elementos estão dispostos em um vetor de nome v com n elementos.
...
{
int i, j, aux;
for (j = 1; j < n; j++)
for (i=j; i > 0 && v[i-1]> v[i]; i--) {
aux = v[i-1];
v[i-1] = v[i];
v[i] = aux;
}
}
...
Assinale o método ao qual o trecho de algoritmo pertence.
		
	 
	Inserção
	
	Bolha
	
	Seleção
	
	Heapsort
	
	Quicksort
	
	
	O seguinte trecho de programa abaixo representa qual tipo de estrutura de ordenação?
void ordenar(float v[], int n) // n é o no. de elementos em v
{
 int i , // índice
 aux, // auxiliar para troca
trocou = true,
fim = n - 1;
while (trocou)
{
    trocou = false; // sinaliza que é falso que trocou
     for (i = 0; i < fim; i++)
     {
       if (v[i] > v[i+1])
       {
         aux = v[i];
         v[i] = v[i+1];
         v[i+1] = aux;
         // sinaliza que é verdadeiro que trocou
         trocou = true;
        } // fim if
    } // fim for
 fim--; // decrementa o fim
} // fim while
} // fim da função
		
	
	Mergesort
	
	Heapsort
	 
	Bublesort
	
	Quicksort
	
	Shellsort
	
Este vetor foi ordenado pelo método:
		
	
	Ordenação por inserção (insertion sort). 
	
	Mergesort.  
	 
	Método da bolha (bubble sort).  
	
	Quicksort.  
	
	Ordenação por seleção (selection sort).  
	Respondido em 03/05/2021 06:12:27
	
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.
	Considere a seguinte função busca escrita em linguagem C++ :
bool busca(int vetor[ ], int n, int tam)
{
    int ini=0, mid;
    while (ini <= tam)
    {
         cout << " x ";
         mid = (ini + tam)/2;
         if (vetor[mid] == n)
             return true;
         else if (n > vetor[mid])
             ini = mid+1;
         else
             tam = mid-1;
    }
    return false;
}
Qual a quantidade total de impressões da letra x nas buscas pelos números n = 4, n = 2 e n = 0 no vetor [1,2,3,4,5,6,7,8], sendo tam = 7 ?
int vetor[] = {1,2,3,4,5,6,7,8};
busca(vetor, 4, 7);
busca(vetor, 2, 7);
busca(vetor, 0, 7);
		
	
	8
	 
	6
	
	5
	
	4
	
	9
	Respondido em 03/05/2021 06:12:34
	
Explicação:
Na 1a. execução da busca... para n = 4 temos impresso :  x
Na 2a. execução da busca ... para n = 2   temos impresso :  x    x
Na 3a. execução da busca ... para n = 0   temos impresso :  x   x   x 
Total de impressões da letra x :  6
	
	
	Analisando o trecho de código a seguir:
inicio=0;
fim= tamanho - 1;
meio=(inicio+fim)/2;
while(procura != nomeVetor[meio] && inicio != fim)
{
  if(procura > nomeVetor[meio])            
   inicio=meio+1;
  else
   fim=meio;
  meio=(inicio+fim)/2;   
}
if(nomeVetor[meio]==procura)
 cout<<"\n....: "< < outroVetor[meio]<<endl;
else
 cout<<"\nDado nao encontrado\n";</endl;
Pode-se afirmar que:trata-se da implementação do algortimo de busca sequencial
	 
	trata-se da implementação do algortimo de busca binária.
	
	trata-se da implementação do algortimo de ordenação bolha.
	
	trata-se da implementação do algortimo de ordenação por inserção.
	
	trata-se da implementação do algortimo de ordenação por seleção.
	Considere a função misterio e o trecho abaixo.
void misterio(int v[ ], int n) {     //n é o número de elementos de v
   int i, j, m, aux;
   for (j = 0; j < n-1; j++) {
        m = j;
        for (i = j+1; i < n; i++) {
             if (v[i] < v[m])
                    m = i;
        }
        aux  = v[j];
        v[j] = v[m];
        v[m] = aux;
	
   }
}
Trecho na main :        
int v[4] = {40,30,10,20};
misterio(v, 4);
Marque a  opção correta.  Como ficará o vetor após a execução da função misterio ?
 
		
	
	5  10  20  30 
	 
	10  20  30  40  
	
	10  20  40  30  
	
	10  30  40  20 
	
	10  30  20 40
	Respondido em 03/05/2021 06:12:50
	
Explicação:
O aluno precisa fazer um teste de mesa para achar a solução.
A função implementa a ordenação por seleção, colocando o vetor de entrada em ordem crescente.
	
	
	Em relação à classificação do método de ordenação, assinale abaixo aquele que, durante o processo de ordenação, só usa a memória principal:
		
	 
	Ordenação Interna
	
	Ordenação Simples
	
	Ordenação Simples Externa
	
	Ordenação Eficiente
	
	Ordenação Externa
	
		
	
	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;      
     }
	
	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]= 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;      
     }
	Qual a importância de se entender a "ordenação" de dados ?
		
	
	A ordenação é a base na qual, muitos algoritmos são construídos. Entendendo a ordenação, tem-se conhecimento para manter outros problemas.
	 
	A ordenação é a base na qual, muitos algoritmos são construídos. Entendendo a ordenação, tem-se conhecimento para resolver outros problemas.
	
	A ordenação é a base na qual, muitos sistemas são construídos. Entendendo a ordenação, tem-se conhecimento para resolver outros problemas.
	
	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.
	
	
	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
		
	
	3
	
	4
	 
	0
	 
	-1
	
	6
	Respondido em 18/03/2021 07:18:30
	
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.
	
	
São métodos ou algoritmos conhecidos de ordenação de dados por troca:
	
 bubble sort e quicksort.hashing e bubble sort.quicksort e hashing.busca por ordenação e ordenação shell.ordenação shell e hashing.Respondido em 18/03/2021 07:18:49
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.
 
	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, II, IV
	
	I, II, III, IV
	
	I, II, III
	
	I, III, IV
	Respondido em 18/03/2021 07:20:54
	
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
	
	
	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 II.
	 
	Está correta apenas a afirmativa II.
	 
	Nenhuma afirmação está correta.
	
	Estão corretas apenas as afirmativas I e III.
	
	Está correta apenas a afirmativa I.
	Respondido em 18/03/2021 07:23:23
	
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 comochar 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.
	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
	
	Ordenação por inserção
	
	Substituição
	
	Busca
	
	Inicializaçã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 é:
		
	
	Registro
	 
	Variável
	 
	Vetor
	
	Função
	
	Matriz
	
		
	
	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;
	
	for (int i = 0; i < n; i++)
   cout << L.matricula[i] << "  "  << L.nome[i] << endl;
	 
	for (int i = 0; i < n; i++)
   cout << L[i].matricula << "  "  << L[i].nome << endl;
	
	for (int i = 0; i < n; i++)
   cout << L.matricula << "  "  << L.nome << endl;
	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.matricula << " " << L.titulo << 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] << endl;
	Respondido em 18/03/2021 07:28:52
	
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;
	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 :
		
	
	Substituição
	
	Ordenação por inserção
	
	Inicialização
	
	Busca
	 
	Inserção
	São métodos ou algoritmos conhecidos de ordenação de dados por troca:
		
	 
	bubble sort e quicksort.
	
	quicksort e hashing.
	
	hashing e bubble sort.
	
	busca por ordenação e ordenação shell.
	
	ordenação shell e hashing.
	Respondido em 03/05/2021 06:13:26
	
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.
 
	As estruturas de dados são utilizadas para manter dados ou informações organizados na memória, o que possibilita a otimização do uso destes dados. Porém, as estruturas guardam características especiais na manipulação destes dados, assim deve-se escolher a estrutura certa ou mais adequada para uma determinada aplicação. Portanto marque a opção que representa a melhor estrutura, quando se tem como requisitos principais o acesso aleatório aos dados e alocação destes de forma contínua na memória.
		
	
	Fila Sequencial
	 
	Lista Sequencial
	
	Pilha Sequencial
	
	Pilha Encadeada
	
	Lista Encadeada
	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].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.matricula << " " << L.titulo << endl;
	
	for (int i = 0; i < n; i++)
cout << L[i] << endl;
	Respondido em 03/05/2021 06:13:37
	
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;
	Quanto a Pesquisa ou Busca Binária julgue os itens em V (VERDADEIRO) ou F (FALSO):
		
	 
	Na operação de remoção de um valor do vetor passado como parâmetro, não é necessário primeiro verificar se a lista está vazia.
	 
	Na operação de inserção de um valor do vetor passado como parâmetro, não é necessário primeiro verificar se a lista está cheia.
	 
	O protótipo abaixo é válido para uma função de busca binária: int buscaBinaria(float v[], float valor , int n);
	 
	A Busca Binária é mais eficiente quando o vetor não está ordenado.
	 
	A Pesquisa Binária consiste em fazer uma busca em um vetor 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, comparando o valor de busca com o elemento da lista.
	Respondido em 03/05/2021 06:14:05
	
Explicação:
>> A Pesquisa Binária consiste em fazer uma busca em um vetor 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, comparando o valor de busca com o elemento da lista.
Resposta: Correto.  Descreve exatamente as características.
>> O protótipo abaixo é válido para uma função de busca binária: int buscaBinaria(float v[], float valor , int n);
Resposta : Correto.  É preciso termos o vetor com o conjunto de dados, o valor a ser procurado e o número de elementos.
>>  A Busca Binária é mais eficiente quando o vetor não está ordenado.
Resposta: FAlso. O vetor não pode estar ordenado na busca binária.
>> Na operação de remoção de um valor do vetor passado como parâmetro, não é necessário primeiro verificar se a lista está vazia.
Resposta : É preciso verificar se a lista está vazia antes de realizar a remoção, pois não se pode retirar valor alguma de lista vazia.
>>  Na operação de inserção de um valor do vetor passado como parâmetro, não é necessário primeiro verificar se a lista está cheia.
Resposta : É preciso verificar se a lista está cheia antes de realizar a inserção. pois não se pode inserir valor em vetor sem espaç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[30] << endl;
	
	for (int i = 0; i < n; i++)cout << L[i] << endl;
	
	for (int i = 0; i < n; i++)
   cout << L.matricula[i] << "  "  << L.nome[i] << endl;
	 
	for (int i = 0; i < n; i++)
   cout << L[i].matricula << "  "  << L[i].nome << endl;
	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
		
	
	0
	
	6
	 
	-1
	
	3
	
	4
	Respondido em 03/05/2021 06:14:12
	
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.
	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
	
	Variável
	
	Função
	
	Matriz
	
	Registro
	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, III, IV
	
	I, II, III
	
	I, II
	
	I, II, III, IV
	Respondido em 03/05/2021 06:14:34
	
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
	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á correta apenas a afirmativa II.
	 
	Nenhuma afirmação está correta.
	
	Estão corretas apenas as afirmativas I e II.
	
	Estão corretas apenas as afirmativas I e III.
	Respondido em 03/05/2021 06:14:41
	
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.
	__________________________ é uma lista linear em que a alocação de memória pode ser estática, e que a forma de armazenamento é contígua ou sequencial na memória. Usamos este tipo de lista quando se tem em mente um tamanho pré-definido, ou seja, quando se sabe até onde a lista pode crescer.
		
	
	Lista Não Linear
	
	Lista Linear Não Sequencial
	
	Lista Linear de Alocação de Memória
	 
	Lista Linear Sequencial
	
	Lista Linear Não Alocada
	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.matricula << " " << L.titulo << 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[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.matricula << "  "  << L.nome << endl;
	
	for (int i = 0; i < n; i++)
   cout << L[i] << endl;
	
	for (int i = 0; i < n; i++)
   cout << L.matricula[i] << "  "  << L.nome[i] << endl;
	 
	for (int i = 0; i < n; i++)
   cout << L[i].matricula << "  "  << L[i].nome << endl;
	
	for (int i = 0; i < n; i++)
   cout << L[i].matricula << "  "  << L[i].nome[30] << endl;
	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 :
		
	
	Inicialização
	
	Ordenação por inserção
	 
	Inserção
	
	Substituição
	
	Busca
	
	
	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
	Quando as inserções e as remoções ocorrem sempre no mesmo lado da lista, trata-se de uma estrutura de dados denominada
		
	
	Lista Circular
	
	Fila
	
	Lista Encadeada
	 
	Pilha
	
	Vetor
	Respondido em 16/04/2021 07:47:07
	
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.
	Algoritmo Pilha
Inicio
IniciarPilha(s)
enquanto (não for o final das entradas) faca
leia (num)
se (num !=  3) então
   Empilhar (s, num)
senão
   Desempilhar(s)
   x := ElementoTopo(s)
fimse
fimenquanto
fimalgoritmo
Considere que, no trecho do algoritmo acima, representado por seu pseudocódigo, seja fornecido para num, sucessivamente, os valores inteiros 1, 2, 3, 4, 5, 3 e 6. Nesse caso, ao final da execução do algoritmo, o valor de x será igual a ...
		
	
	5 e a pilha terá os valores 6, 3, 5, 4, 3, 2 e 1.2 e a pilha terá os valores 6, 4 e 1.
	
	3 e a pilha terá os valores 6, 4 e 1.
	 
	5 e a pilha terá os valores 6, 4 e 1.
	
	3 e a pilha terá os valores 6, 5, 4, 2 e 1.
	Respondido em 16/04/2021 07:51:36
	
Explicação:
Seguindo o fluxo do algoritmo, serão empilhados 1 e 2. Ao chegar no 3, o valor 2 será desempilhado e armazenado em x.
Continuando o loop, 4 é mepilhado, depois 5 é empilhado e ao chegar novamente em 3, o 5 é deempilhado e armazenado em x. Continuando o loop enquanto existe entrada, empilha-se o 6.
Dessa forma temos que o valor em 5 é 5 e a pilha possui os valors 6, 4 e 1, sendo 6 no topo da pilha.  
Logo, a opção correta é 5 e a pilha terá os valores 6, 4 e 1.
	Na estrutura de dados tipo pilha, há duas operações básicas para empilhamento e desempilhamento. Essas operações são conhecidas como:
		
	
	PUSH e PULL;
	
	HEAP e POP;
	 
	PUSH e POP.
	
	Base e Topo;
	
	PULL e POP;
A estrutura de dados que segue a lógica LIFO (Last in First Out) é denominada :
	
Árvore
 PilhaVetor
Lista duplamente encadeada
FilaRespondido em 16/04/2021 07:52:26
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.
	A estrutura de dados do tipo pilha (stack) é um tipo abstrato de dado baseada no princípio:
		
	
	Da localidade de referência.
	
	De dividir para conquistar.
	
	Da indiferença.
	 
	Last In First Out (LIFO).
	
	First In First Out (FIFO).
	Respondido em 16/04/2021 07:54:40
	
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.
	Ling Tang, estudante de computação, precisou implementar parte de um jogo de cartões com figuras de animais.  Alguns jogadores teriam que jogar os cartões na mesa, enquanto outros deveriam devolver os cartões  na sequência inversa à jogada.  Ling Tang  estudou o mecanismo do jogo e decidiu usar a melhor estrutura de dados  na sua implementação. Qual a estrutura escolhida ?
		
	
	 árvore
	
	fila 
	 
	 pilha
	
	 grafo
	
	lista
	Respondido em 16/04/2021 07:55:47
	
Explicação:
Pelas características do problema temos uma estrutura linear.  Como menciona-se que deve-se devolver os cartões na ordem inversa à jogada, temos caracterizada a estrutura de dados pilha.  Na pilha o último elemento a entrar será o primeiro a sair.
	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.
		
	
	árvore
	
	fila
	
	lista
	
	grafo
	 
	pilha
	Considere que, em uma estrutura de dados p do tipo pilha, 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
	
	4 e 80
	 
	11 e 29
	
	7 e 29
	
	11 e 80
	Respondido em 16/04/2021 07:59:50
	
Explicação:
Pilha é uma estrutura de dados em que insere-se em uma extremidade e retira-se da mesma extremidade. Assim, acompanhando cada operação realizada tem-se :
Insere-se 10, 5, 3 e 40, nesta ordem, devido a operação push (empilhar)
Ao se fazer pop, temos que o último valor empilhado é desempilhado. Ou seja, retira-se o 40.
Depois empilha-se o 11, 4 e 7.  Após esses empilhamentos, a pilha fica  : 10,  5, 3, 11, 4 e 7, sendo 7 no topo da pilha e sendo 10 na área de indice 0 (se usarmos vetor).
Ao se fazer mais um pop, o 7 é desempilhado.
Ao se fazer o último pop, o 4, que havia ficado no topo da pilha é desempilhado. Então, se fica com o 11 no topo da pilha.
Como os dados da pilha são 10, 5, 3 e 11 (este último no topo da pilha), se somarmos todos os elementos teremos 29.
Logo, a opção correta é  11 e 29.
	Quando executado, um programa tem acesso à áreas de memória. A área de memória que se destina, principalmente, à alocação dos registros de ativação denomina-se:
		
	 
	( ) área de pilha
	
	( ) área de código
	
	( ) área de registro
	
	( ) área de dados
	
	( ) área de heap
	Respondido em 03/05/2021 06:15:29
	
Explicação:
Chamamos área de pilha uma espaço de memória especialmente reservado para organização de uma pilha de dados. Esta pilha é usada como memória auxiliar durante a execução de uma aplicação.
As operações sobre esta área são push (empilha) e pop (desempilha).
	Qual das alternativas a seguir pode definir uma estrutura de pilha?
		
	
	Entrada de dados pelo final e saída pelo início.
	 
	Entrada e saída de dados pelo final.
	
	Entrada e saída de dados pelo início.
	
	Entrada de dados pelo início e saída pelo final.
	
	Entrada e saída de dados em qualquer local.
	Pilhas são estruturas de dados que se utilizam do algoritmo LIFO, last in first out, ou melhor, o último a entrar é o primeiro a sair. Desta forma pode-se abstrair que existe apenas um local para a saída e a entrada de dados, ou seja o topo da pilha.
Supondo que uma pilha seja implementada por um vetor de inteiros de tamanho 10 e que exista uma variável global chamada topo para indexar esta posição de entrada e saída de dados e ainda quando esta variável assume o valor -1 indica que a pilha está vazia. Marque a opção que melhor ilustra a função de exclusão de um dado do vetor pilha, supondo ainda que o vetor tenha sido declarado inicialmente de forma global.
		
	
	void pop(){ if(pilha != -1) pilha[topo-1];}
	
	void pop(){ if(pilha != -1) pilha[topo];}
	 
	void pop(){ if(topo != -1) topo--;}
	
	void pop(){ if(topo != -1) pilha[topo-1];}
	
	void pop(){ if(topo != -1) topo++;}
	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?
		
	
	7 e 2
	
	Apenas o 2
	 
	Nenhum, a pilha estará vazia.
	
	10 e 2
	
	Apenas o 10
	Respondido em 03/05/2021 06:15:47
	
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
	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
	
	lista
	
	árvore
	
	grafo
	 
	pilha
	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 e II estão corretas.
	
	I e IV estão corretas.
	
	I, II e V estão corretas.
	 
	I, II e IV estão corretas.
	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 retorneno último site visitado e retira o endereço do site da estrutura de dados.
Assinale a estrutura de dados mais adequada para  este problema.
		
	
	fila
	 
	pilha
	
	árvore
	
	lista
	
	grafo
	Assumindo que estamos com uma estrutura de dados do tipo LIFO, as operações abaixo vão resultar em que elementos na mesma: PUSH(2), PUSH(3), PUSH(4), POP(), POP(), PUSH(5), PUSH(7), POP()
		
	
	2 3 4
	
	2 4 7
	
	3 4 5
	
	5 7
	 
	2 5
	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 na extremidade denominada topo.
	
	uma lista do tipo LILO.
	
	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.
	
	um tipo de lista linear em que as operações de inserção e remoção são realizadas aleatoriamente.
	Respondido em 03/05/2021 06:16:20
	
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
Comentado
	
	
	 
		2
          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:
		
	 
	PUSH e POP.
	
	PUSH e PULL;
	
	PULL e POP;
	
	Base e Topo;
	
	HEAP e POP;
	Respondido em 03/05/2021 06:16:24
	
		
	Gabarito
Comentado
	
	
	 
		3
          Questão
	
	
	Observar os quadros abaixo e reponder o que se pede:
O que aparecerá no topo da PILHA apos os comandos do quadro II?
		
	
	SANTOS_AGOSTINHO
	
	SANTA_GENOVEVA
	 
	SANTA_CATARINA
	
	SANTO_ANTONIO
	
	SANTO_ESPEDITO
	Respondido em 03/05/2021 06:16:31
	
Explicação:
FAzendo passo a passo...
empilha SANTO_ANTONIO e depois, SANTA_FILOMENA. Fica SANTA_FILOMENA no topo.
No item c) desempilha. Então, sai SANTA_FILOMENA da pilha.
No item d) empilha SANTO_AGOSTINHO. Então, fica SANTO_ANTONIO e logo no topo, SANTO_AGOSTINHO.
No item e) temos o elemento do topo que é SANTO_AGOSTINHO.
No item f) empilhamos SANTA_CATARINA.  Então, a sequência é SANTO_ANTONIO -> SANTO_AGOSTINHO - >SANTA_CATARINA (NO TOPO DA PILHA)
No item g, destaca-se o elemento do topo que é  SANTA_CATARINA.
No item h) empilha-se SANTO_EXPEDITO .  Então, a pilha fica assim : SANTO_ANTONIO -> SANTO_AGOSTINHO - >SANTA_CATARINA -> SANTO_EXPEDITO (este último no topo da pilha).
No item i) Desempilha-se o item do topo, ou seja, SANTO_EXPEDITO. Então, a pilha fica assim : SANTO_ANTONIO -> SANTO_AGOSTINHO - >SANTA_CATARINA
No item j) empilha-se o valor do topo . Então, a pilha fica assim : 
SANTO_ANTONIO -> SANTO_AGOSTINHO - >SANTA_CATARINA -> SANTA_CATARINA
No item k) Desempilha-se um valor e este valor é empilhado. Sai SANTA_CATARINA, mas o mesmo é empilhado. Então : 
SANTO_ANTONIO -> SANTO_AGOSTINHO - >SANTA_CATARINA -> SANTA_CATARINA (no topo)
No item l)  empilha-se SANTA_GENOVEVA. Então, a pilha fica assim : SANTO_ANTONIO -> SANTO_AGOSTINHO - >SANTA_CATARINA -> SANTA_CATARINA -> SANTA_GENOVEVA
No item m) É desempilhado SANTA_GENOVEVA. A pilha fica : SANTO_ANTONIO -> SANTO_AGOSTINHO - >SANTA_CATARINA -> SANTA_CATARINA
No item n) Pega-se o elemento do topo e o mesmo é empilhado. Então : 
ANTO_ANTONIO -> SANTO_AGOSTINHO - >SANTA_CATARINA -> SANTA_CATARINA - > SANTA_CATARINA  (no topo)
Logo, no topo da pilha temos SANTA_CATARINA
 
	
	
	 
		4
          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
	
	Os valores removidos serão C e D, nessa ordem
	 
	Os valores removidos serão D e C, nessa ordem
	
	A resposta depende da chave de busca, pois a remoção depende da chave fornecida
	
	Nenhuma das alternativas anteriores
	Respondido em 03/05/2021 06:16:38
	
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. 
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.
	
	
	 
		5
          Questão
	
	
	Considere que, em uma estrutura de dados p do tipo pilha, 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
	 
	11 e 29
	
	4 e 80
	
	7 e 29
	
	7 e 40
	Respondido em 03/05/2021 06:16:44
	
Explicação:
Pilha é uma estrutura de dados em que insere-se em uma extremidade e retira-se da mesma extremidade. Assim, acompanhando cada operação realizada tem-se :
Insere-se 10, 5, 3 e 40, nesta ordem, devido a operação push (empilhar)
Ao se fazer pop, temos que o último valor empilhado é desempilhado. Ou seja, retira-se o 40.
Depois empilha-se o 11, 4 e 7.  Após esses empilhamentos, a pilha fica  : 10,  5, 3, 11, 4 e 7, sendo 7 no topo da pilha e sendo 10 na área de indice 0 (se usarmos vetor).
Ao se fazer mais um pop, o 7 é desempilhado.
Ao se fazer o último pop, o 4, que havia ficado no topo da pilha é desempilhado. Então, se fica com o 11 no topo da pilha.
Como os dados da pilha são 10, 5, 3 e 11 (este último no topo da pilha), se somarmos todos os elementos teremos 29.
Logo, a opção correta é  11 e 29.
 
	
	
	 
		6
          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.
		
	 
	ordenado - topo - topo - empilhar ou push  -  desempilhar ou pop
	
	desordenado - topo - base - push ou empilhar  - pop ou desempilhar 
	
	ordenado - topo - topo - pop ou desempilhar  - push ou empilhar 
	
	desordenado - base - topo - down - up
	
	ordenado - final - início - up - down
	Respondido em 03/05/2021 06:16:47
	
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 a sair da mesma.  Insere-se no topo  (empilhar ou push) e retira-se do topo (desempilhar ou pop) . 
	
	
	 
		7
          Questão
	
	
	Assinale a opção que apresenta uma estrutura de dados embasada no princípio last in, first out (LIFO) ¿ último a entrar, primeiro a sair ¿, na qual, conforme a inserção, os dados inseridos primeiramente na estrutura são os últimos a serem removidos.
		
	 
	pilhas
	
	árvores
	
	vetores
	
	listas
	
	filas
	Respondido em 03/05/2021 06:16:50
	
Explicação:
Por definição, a estrutura de dados pilha é uma lista linear em que as inserções e remoções seguem o critério ou lógica LIFO (Last In Firsts Out).
Em uma lista, árvore ou vetor a inserção pode ser em qualquer posição, desde que não haja ordem. E a estrutura de dados fila segue a lógica FIFO.
 
	
	
	 
		8
          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.
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á acusarerro.
II A variável topo está sem tipo.
III O teste está correto porque o índice do primeiro elemento do vetor em C++ é 1, obrigatoriamente.
IV Na linha comentada deveria estar presente um comando de atribuição que decrementaria a variável topo.
V A linha vetor[topo]=valor; está correta.
		
	
	I , III e V estão corretas
	
	I e III estão corretas
	
	I e II estão corretas
	 
	II e V estão corretas
	
	I, II e IV estão corretas
	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:
		
	 
	C
	
	X
	
	A
	 
	W
	
	D
	Respondido em 19/04/2021 06:29:54
	
		
	Gabarito
Comentado
	
	
		
	Gabarito
Comentado
	
	
		
	Gabarito
Comentado
	
	
	 
		2
          Questão
	
	
	IFMT - Técnico em Tecnologia 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-1]
	 
	[4-6-8-10-1-2]
	
	[2-1-3-4-6-8]
	
	[3-4-6-8-10]
	Respondido em 19/04/2021 06:31:07
	
Explicação:
Temos a fila inicialmente 
  3 4 6 8  10
Após inserir 1, a fila ficará :  3 4 6  8 10 1
Após isnerir 2 : 3 4 6  8 10 1 2
Após uma remoção :  4 6  8 10 1 2
	
	
	 
		3
          Questão
	
	
	A estrutura de dados conhecida pela lógica  FIFO (First In First Out) é denominada  :
		
	
	Pilha
	
	Vetor
	 
	Fila
	
	Lista circular
	
	Árvore
	Respondido em 19/04/2021 06:31:29
	
Explicação:
Fila é, por definição, uma lista linear ordenada em que as inserções e remoções seguem a lógica FIFO.
	
	
	 
		4
          Questão
	
	
	Qual estrutura de dados é mais adequada para armazenar em um sistema operacional os processos que estão prontos para utilizar o processador?
		
	
	Grafo
	
	Lista
	
	Pilha
	 
	Fila
	
	Árvore
	Respondido em 19/04/2021 06:31:48
	
Explicação:
Pode se ter uma fila de processos para a CPU (processador), visto que o primeiro processo a chegar à fila será atendido primeiro e sairá da fila primeiro, o que faz a  lógica FIFO, que rege a fila. Observe a característica linear do problema. Por tudo isso,  a resposta é fila.
 
Lista : linear e não segue FIFO. Insere-se em qualquer posição e retira-se de qualquer posição ou se mantém a ordem, se for ordenada.
 
Pilha : segue LIFO
 
Árvore e Grafo : estrutura de dados não linear.
	
	
	 
		5
          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.
	
	Autômato.
	 
	Deque.
	Respondido em 19/04/2021 06:33:17
	
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.
	
	
	 
		6
          Questão
	
	
	Marque a afirmativa que represente uma Lista Circular Simplesmente Encadeada:
		
	
	O ponteiro do "primeiro" nó não é NULL, mas sim aponta de volta para o "último" nó da lista, formando um ciclo.
	
	Cada nó possui um só ponteiro que referencia o próximo nó da lista.
	
	Cada ponteiro possui um só endereço que referencia o "primeiro" nó da lista.
	 
	O ponteiro do "último" nó não é NULL, mas sim aponta de volta para o "primeiro" nó da lista.
	 
	Além do campo relativo ao dado, cada nó possui dois ponteiros,
	Respondido em 19/04/2021 06:34:37
	
		
	Gabarito
Comentado
	
	
	 
		7
          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 o apontador de final apontar para zero.
	
	Quando o apontador de final menos um (final-1) for igual ao inicio.
	 
	Quando os apontadores de final e início apontarem para zero.
	
	Quando o apontador de início apontar para zero.
	Respondido em 19/04/2021 06:40:54
	
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.  
 
	
	
	 
		8
          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?
		
	
	PONTEIRO
	 
	LISTA
	 
	PILHA
	
	STRUCT
	
	CONJUNTO
	Respondido em 19/04/2021 06:44:02
	
Explicação:
Pela estrutura apresentada verifica-se ser a de uma Pilha.
		1
          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 1 e fim 4
	 
	inicio 2 e fim 0
	
	Nenhuma das opções
	
	Início 0 e fim 0
	
	Início 4 e fim 4
	Respondido em 03/05/2021 06:17:12
	
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
	
	
	 
		2
          Questão
	
	
	A estrutura de dados conhecida pela lógica  FIFO (First In First Out) é denominada  :
		
	 
	Fila
	
	Lista circular
	
	Vetor
	
	Árvore
	
	Pilha
	Respondido em 03/05/2021 06:17:16
	
Explicação:
Fila é, por definição, uma lista linear ordenada em que as inserções e remoções seguem a lógica FIFO.
	
	
	 
		3
          Questão
	
	
	Para organizar o acessodos 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:
		
	
	Listas
	 
	Filas
	
	Pilhas
	
	Árvores
	
	Structs
	Respondido em 03/05/2021 06:17:20
	
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.
	
	
	 
		4
          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 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)  {
     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)  {
       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;
    }
}
 
	Respondido em 03/05/2021 06:17:28
	
		
	Gabarito
Comentado
	
	
	 
		5
          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 pessoas para tirar o visto e fila de pessoas para usar o caixa eletrônico.
	
	Fila de documentos para xerox e fila de arquivos para impressão.
	 
	Fila de arquivos para impressão e buffer para gravação de dados em fila.
	
	Fila de arquivos para impressão e fila de pessoas no caixa de um supermercado.
	
	Buffer para gravação de dados em mídia e fila de pessoas para comprar o ticket do metrô.
	Respondido em 03/05/2021 06:17:38
	
		
	Gabarito
Comentado
	
	
	 
		6
          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?
		
	
	LISTA
	
	STRUCT
	
	CONJUNTO
	
	PONTEIRO
	 
	PILHA
	Respondido em 03/05/2021 06:17:45
	
Explicação:
Pela estrutura apresentada verifica-se ser a de uma Pilha.
	
	
	 
		7
          Questão
	
	
	Um conjunto ordenado de itens a partir do qual podem ser eliminados itens em uma extremidade e no qual podem ser inseridos itens na outra extremidade é denominado de
		
	
	lista encadeada.
	 
	fila.
	
	lista simples.
	
	árvore.
	
	pilha.
	Respondido em 03/05/2021 06:17:54
	
Explicação:
Por definição, fila é uma lista ordenada que segue a lógica FIFO, ou seja, o primeiro a entrar será o primeiro a sair. Assim, insere-se no fim e retira-se do início da fila.
	
	
	 
		8
          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)  {
        if (F.fim == -1 && F.inicio == 0)
            cout << "Não há agentes para retirar. " << endl;
       else  {
            cout << "Removido o agente " <<     F.v[F.inicio];
             F.inicio++;
       }
}
 
	
	 
void desenfileirar(Fila &F)  {
       if (F.inicio > F.fim)
            cout << "Não há agentes para retirar. " << endl;
     else  {
         cout << "Removido o agente " <<     F.v[F.inicio];
     }
}
	
	 
void desenfileirar(Fila F)  {
   cout << "Removido o agente " <<     F.v[F.inicio];
   F.inicio--;
 }
 
	 
	void desenfileirar(Fila &F)  {
        if (F.inicio > F.fim)
            cout <<  "Não há agentes para retirar. " << endl;
       else  {
             cout <<  "Removido o agente "  <<     F.v[F.inicio];
             F.inicio++;
       }
}
	
	 
void desenfileirar(Fila  F)  {
       if (F.inicio > F.fim)
            cout << "Não há agentes para retirar. " << endl;
     else  {
          cout << "Removido o agente " <<     F.v[F.inicio];
         F.inicio++;
    }
}
		1
          Questão
	
	
	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 estrutura fila não sofre esgotamento de memória, isto ocorre com as pilhas já que implementam o algoritmo LIFO.
	 
	A estrutra sofrerá do fenômeno chamado esgotamento de memória e logo não poderá mais ser utilizada. A solução é o uso da fila circular.
	
	A estrutra sofrerá do fenômeno esgotamento de memória, mas se os dados estiverem ordenados isto não afetará a estrutura.
	
	Um vetor é uma estrutura base correta para esta implementação, já que está imune a fenômenos como esgotamento de memória.
	
	Um vetor não pode ser usado na implementação de uma fila sequencial apenas em pilhas sequenciais.
	Respondido em 03/05/2021 06:18:20
	
		
	Gabarito
Comentado
	
	
	 
		2
          Questão
	
	
	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
	
	Pilha
	
	Struct
	 
	Fila
	
	Bolha
	Respondido em 03/05/2021 06:18:24
	
		
	Gabarito
Comentado
	
	
	 
		3
          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:
		
	
	D
	 
	C
	
	X
	
	W
	
	A
	Respondido em 03/05/2021 06:18:29
	
		
	Gabarito
Comentado
	
	
		
	Gabarito
Comentado
	
	
		
	Gabarito
Comentado
	
	
	 
		4
          Questão
	
	
	Escolha a opção verdadeira :
		
	
	Uma pilha, a depender de sua configuração, pode funcionar como uma fila
	 
	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.
	
	Pilhas e filas não podem ser implementadas através do uso de listas encadeads
	
	Uma estrutura de dados que segue a lógica FIFO permite inclusões apenas no topo da estrutura de dados.
	
	Uma estrutura de dados que segue a lógica FIFO equivale a uma estrutura de dados  que segue a lógica LIFO.
	Respondido em 03/05/2021 06:18:36
	
Explicação:
Analisando cada opção :
	 
	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ógicaLIFO, 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.
	
	
	 
		5
          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 vetor de organização de dados.
	
	o sistema I, adota o esquema LIFO de organização de dados e o II, o esquema FIFO.
	 
	tanto o sistema I, quanto o II, adotam o esquema FIFO de organização de dados.
	
	tanto o sistema I, quanto o II, adotam o esquema LIFO de organização de dados.
	
	o sistema I, adota o esquema FIFO de organização de dados e o II, o esquema LIFO.
	Respondido em 03/05/2021 06:18:41
	
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.
 
	
	
	 
		6
          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()
		
	 
	5 7
	
	7 5
	
	4 5 6
	
	4 6 7
	
	4 5
	Respondido em 03/05/2021 06:18:44
	
	
	 
		7
          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 Linear
	
	Fila
	
	Pilha
	 
	Fila Circular
	
	Lista simplesmente encadeada
	Respondido em 03/05/2021 06:18:51
	
		
	Gabarito
Comentado
	
	
	 
		8
          Questão
	
	
	Qual estrutura de dados é mais adequada para armazenar em um sistema operacional os processos que estão prontos para utilizar o processador?
		
	 
	Fila
	
	Pilha
	
	Grafo
	
	Lista
	
	Árvore
	Respondido em 03/05/2021 06:18:55
	
Explicação:
Pode se ter uma fila de processos para a CPU (processador), visto que o primeiro processo a chegar à fila será atendido primeiro e sairá da fila primeiro, o que faz a  lógica FIFO, que rege a fila. Observe a característica linear do problema. Por tudo isso,  a resposta é fila.
 
Lista : linear e não segue FIFO. Insere-se em qualquer posição e retira-se de qualquer posição ou se mantém a ordem, se for ordenada.
 
Pilha : segue LIFO
 
Árvore e Grafo : estrutura de dados não linear.
		1
          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 execuçã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 tanto em tempo de execução quanto em tempo de compilação, mas não podem ter seus tamanhos alterados de acordo com a demanda.
	
	As estruturas dinâmicas são assim chamadas, pois podem fazer alocação de memória em tempo de compilação e terem seus tamanhos alterados de acordo com a demanda.
	
	As estruturas dinâmicas são assim chamadas, pois podem fazer alocação de memória em tempo de compilação e entretanto seus tamanhos só são alterados na codificação de acordo com a demanda.
	Respondido em 19/04/2021 06:47:07
	
	
	 
		2
          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;
                  };
		
	 
	 Lista * insereCliente(Lista *p, Cliente cl)
{
      Lista *novo = new Lista;
      novo.c = cl;
      novo.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[];
      novo[0].c = cl;
      novo[0].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;
}
	Respondido em 19/04/2021 06:53:54
	
		
	Gabarito
Comentado
	
	
	 
		3
          Questão
	
	
	Sobre listas simplesmente encadeadas, é INCORRETO afirmar que :
		
	
	são acessadas através de um ponteiro para o primeiro nó da lista
	
	podem implementar pilha e fila dinâmicas
	 
	possuem tamanho fixo
	
	o ponteiro do último nó é NULL
	
	os nós da lista são alocados dinamicamente.
	Respondido em 19/04/2021 06:55:33
	
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.
	
	
	 
		4
          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
	
	Nenhuma das opções anteriores
	 
	O endereço da variável p será impresso
	
	O conteúdo da variável p será impresso
	
	O conteúdo da variável a será impresso
	Respondido em 19/04/2021 06:56:51
	
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.
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.
	
	
	 
		5
          Questão
	
	
	Em uma aplicaçãoque usa processos de alocação estática e dinâmica de memória é correto afirmar que
		
	 
	A memória utilizada pela aplicação é inicialmente estática, mas pode mudar
	
	Todas as afirmações acima são incorretas
	
	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 é totalmente alocada após o inicio de sua execução
	Respondido em 19/04/2021 07:32:24
	
		
	Gabarito
Comentado
	
	
	 
		6
          Questão
	
	
	QUAL A SAÍDA DESTE PROGRAMA?
#include 
main()
{
 int i=10,*p;
 p=&i;
 
 cout << *p << " " << i + *p<< " " << *p**p << " " << i+**&p;
 system("pause");
}
		
	
	10 20 104 22
	 
	10 20 100 22
	 
	10 20 100 20
	
	10 24 102 25
	
	10 25 100 30
	Respondido em 19/04/2021 15:28:32
	
	
	 
		7
          Questão
	
	
	Qual o valor de x no final do programa? int main() { int x, *p, y; x = 2; p = &x; y = *p; y = 5; (*p)++; (*p) = (*p) - y; return(0); }
		
	
	2
	
	5
	
	Nenhuma das anteriores. O programa possui um erro de sintaxe.
	 
	-2
	
	8
	Respondido em 19/04/2021 15:31:59
	
Explicação:
Analisando passo a passo : 
int main() {
int x, *p, y;
x = 2;
p = &x;   // p aponta para x, sendo que x recebeu 2
y = *p;   //y recebeu o conteúdo da área apontada por p, ou seja, y recebeu *p que é 2
y = 5;   //y recebeu 5
(*p)++;  //A área apontada por p recebeu 3 Ou seja, x recebeu 3
(*p) = (*p) - y;   //*p, que é x recebeu 3 - 5. Ou seja, *p recebeu -2
return(0);
}
Como p aponta para x e *p recebeu -2, então x recebeu -2
	
	
	 
		8
          Questão
	
	
	Sobre listas encadeadas, é INCORRETO afirmar que:
		
	
	a memória é alocada dinamicamente;
	
	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;
	
	o final da lista faz uma referência para NULL;
	 
	possuem tamanho fixo;
	Respondido em 19/04/2021 15:33:49
	
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.
		1
          Questão
	
	
	As structs (estruturas) são utilizadas para modelar os nodos de estruturas dinâmicas como, por exemplo, as listas encadeadas, seja o seguinte exemplo de nodo de uma lista de produtos: struct nodo{ float valor; string produto; nodo * proximo; }; Suponha que um determinado ponteiro pt esteja apontando para um nodo desta lista, e que se queira alterar o conteúdo do campo valor deste nodo, que está sendo apontado por pt, para 5.60. Marque a alternativa que corretamente possibilita esta operação:
		
	
	pt.valor->5.60;
	
	pt->próximo.valor=5.60;
	
	pt->5.60;
	
	pt->próximo->valor=5.60;
	 
	pt->valor=5.60;
	Respondido em 03/05/2021 06:19:13
	
		
	Gabarito
Comentado
	
	
	 
		2
          Questão
	
	
	Uma lista linear implementada através de encadeamento deve apresentar obrigatoriamente:
i) um ponteiro para o primeiro nó da lista;
ii) encadeamento entre os nós, através de algum campo de ligação;
iii) não deve haver uma indicação de final da lista;
iv) um ponteiro para o final da lista.
Levando em consideração as afirmações apresentadas, qual das alternativas é a correta?
		
	
	as afirmações i, ii e iii estão corretas.
	
	somente a afirmação iv esta correta.
	 
	as afirmações i e ii estão corretas.
	
	somente a afirmação i esta correta.
	
	as afirmações ii e iv estão corretas.
	Respondido em 03/05/2021 06:19:18
	
	
	 
		3
          Questão
	
	
	Em uma lista linear simplesmente encadeada.
		
	
	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,
	
	O ponteiro do "último" nó não é NULL, mas sim aponta de volta para o "primeiro" nó da lista.
	
	O ponteiro do "primeiro" nó não é NULL, mas sim aponta de volta para o "primeiro" nó da lista, formando um ciclo.
	 
	Cada nó possui um só ponteiro que referencia o próximo nó da lista.
	Respondido em 03/05/2021 06:19:22
	
		
	Gabarito
Comentado
	
	
	 
		4
          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 a afirmativa iii esta correta.
	
	Somente as afirmativas i e ii estão corretas.
	 
	Todas as afirmativas estão corretas.
	
	Somente a afirmativa i esta correta.
	
	Todas as afirmativas estão incorretas.
	Respondido em 03/05/2021 06:19:26
	
		
	Gabarito
Comentado
	
	
	 
		5
          Questão
	
	
	Assinale a alternativa correta sobre alocação de memória.
		
	
	Uma das vantagens da alocação dinâmica sobre a alocação estática é que não é necessário fazer a liberação da memória utilizada.
	 
	Na alocação dinâmica de memória, a memória é alocada sob demanda, apenas quando necessário.
	
	É correto afirmar que a alocação dinâmica de memória sempre leva a programas mais rápidos.
	
	A declaração de um vetor é um exemplo clássico de alocação dinâmica de memória.
	
	Alocação estática de memória refere-se ao processo de alocar memória com o uso de ponteiros.
	Respondido em 03/05/2021 06:19:31
	
	
	 
		6
          Questão
	
	
	Numa Lista Encadeada, podemos afirmar que:
I) Todos os nós são alocados de uma única vez.
II) Os nós não são alocados contiguamente na memória obrigatoriamente.
III) Os elementos de uma lista encadeada são ligados por dois ponteiros.
IV) Para que possamos percorrer toda a lista, precisamos armazenar o endereço do próximo elemento para possibilitar o encadeamento.
		
	
	Só a II está correta
	
	I , II e III estão corretas
	
	I, II, III e IV estão corretas
	
	I, III e IV estão corretas
	 
	II e IV estão corretas
	Respondido em 03/05/2021 06:19:35
	
		
	Gabarito
Comentado
	
	
	 
		7
          Questão
	
	
	Qual é o resultado do código abaixo:
  int a =10;
int *p = &a;
cout<< &p << endl;
		
	 
	O endereço da variável p será impresso
	
	Nenhuma das opções anteriores
	
	O conteúdo da variável p será impresso
	
	O conteúdo da variável a será impresso
	
	O endereço da variável a será impresso
	Respondido em 03/05/2021 06:19:38
	
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.
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.
	
	
	 
		8
          Questão
	
	
	Marque a afirmativa que represente uma separação.
		
	
	Organizar os dados da lista em ordem crescente ou decrescente.
	 
	Consiste em dividir a lista em duas outras listas. A quantidade de nós que cada lista terá, depende da necessidade.
	
	Juntar duas listas, colocando uma lista no final de outra, obtendo, ao final, uma só lista resultante.
	
	Alterar a ordem dos dados da lista do final para o início, atualizando a lista.
	
	Intercalar a ordem dos dados da lista do final para o início, atualizando a lista.
		1
          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
		
	
	Duplamente Encadeada
	
	Balanceada
	
	Binária
	 
	Encadeada Circular
	
	Invertida
	Respondido em 03/05/2021 06:19:59
	
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.
	
	
	 
		2
          Questão
	
	
	    Tei Ping , famosa  cabeleireira das estrelas,  possui uma lista não ordenada de clientes em que registra apenas o nome, endereço e o telefone de cada cliente. Como não se pode pré-definir um limite para o tamanho da lista, como se pode implementar a inserção de um novo cliente na lista ? Sabe-se  que cada  cliente é do tipo Cliente  e a lista é do tipo List assim definidos :
 
struct Cliente {
     long int matricula;
      string nome, endereco e tel;
};
struct List {
                           Cliente  p;
                           struct List *link;
                  };
		
	
	 List * insereCliente(List *i, Cliente c)
{
      List *novo = new List;
      novo.p = c;
      novo.link = i;
     return novo;
}
	
	List * insereCliente(List *i)  {
      List *novo = new List;
     Cliente c;
      novo->p =  c;
      novo->link = i;
     return novo;
}
	 
	List * insereCliente(List *i, Cliente c)
{
      List *novo = new List;
      novo->p = c;
      novo->link =i;
     return novo;
}
	
	List  insereCliente(List *i, Cliente c)
{
      List  novo[];
      novo[0].p = c;
      novo[0].link = i;
     return novo;
}
	
	List * insereCliente(List  *i, Cliente c){
      List *novo ;
      novo->p = c;
      novo->link = i;
     return novo;
}
	Respondido em 03/05/2021 06:20:07
	
Explicação:
Analisando a resposta certa :
List * insereCliente(List *i, Cliente c)
{
      List *novo = new List;    //aloca memória para novo nó
      novo->p = c;    //acessa o campo p da área apontada por novo e atribui o cliente c ao campo p
      novo->link =i;   //faz o link do novo nó apontar para onde i está apontando
     return novo;    //retorna o endereço do novo nó
}
Logo, esta função insere um novo nó no início de uma lista simplesmente encadeada e retorna o ponteiro para o início da lista resultante.
Analisando as demais opções, que estão erradas :
2o. item .... Opção errada : faltou alocar memória
3o. item .... Opção errada : Cliente c não está definido.
4o. item .... Opção errada :  Usa ponto quando deveria ser o operador seta
5o. item .... Opção errada : Muitos erros... Usa vetor sem definir tamanho e trabalha com  o elemento de índice zero de novo, acessando os campos com ponto.
	
	
	 
		3
          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 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.
	
	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.
	Respondido em 03/05/2021 06:20:16
	
	
	 
		4
          Questão
	
	
	Verifique as afirmativas e marque a opção correta.
I- Na alocação estática de memória a quantidade de memória alocada é feita em tempo de compilação.
II- Na alocação dinâmica de memória a quantidade de memória alocada é feita em tempo de execução.
III- Na alocação estática de memória a quantidade de memória alocada é fixa durante a execução do programa.
IV- Na alocação dinâmica de memória a quantidade de memória alocada é fixa durante a execução do programa.
		
	
	Apenas a I está correta
	
	Apenas as opções I e II são corretas
	
	Apenas a II está correta
	 
	Apenas a IV está errada
	
	Apenas a opção I está errada
	Respondido em 03/05/2021 06:20:21
	
Explicação:
Analisando cada afirmativa :
I- Na alocação estática de memória a quantidade de memória alocada é feita em tempo de compilação.
Correto. Aloca-se memória antes da execução.
II- Na alocação dinâmica de memória a quantidade de memória alocada é feita em tempo de execução.
Correto.
III- Na alocação estática de memória a quantidade de memória alocada é fixa durante a execução do programa.
Correto. A memória alocada antes da execução não sofre alteração durante a execução.
IV- Na alocação dinâmica de memória a quantidade de memória alocada é fixa durante a execução do programa.
Falso. A quantidade de memória não é fixa.
 
Apenas a afirmativa IV é falsa ou está errada.
	
	
	 
		5
          Questão
	
	
	Em uma aplicação que usa apenas o processo de alocação estática de memória é correto afirmar que:
		
	
	A memória utilizada pela aplicação é totalmente alocada após o inicio de 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
	 
	Toda a memória utilizada pela aplicação não muda durante toda a sua execução
	
	A memória utilizada pela aplicação é inicialmente estática, mas pode mudar
	
	Todas as afirmações acima são incorretas
	Respondido em 03/05/2021 06:20:27
	
		
	Gabarito
Comentado
	
	
	 
		6
          Questão
	
	
	E C++, quando um ponteiro é declarado para uma struct, o acesso aos campos deste registro (struct) se dá pelo operador :
		
	 
	-> (seta).
	
	, (vírgula).
	
	& (e comercial ou eitza).
	
	∙ (ponto).
	
	* (asterisco).
	Respondido em 03/05/2021 06:20:29
	
Explicação:
Por definição, o operador é o seta, pois se tem, no caso, ponteiro para struct. 
	
	
	 
		7
          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:
 
		
	 
	100 9 200
	
	9 9 200
	
	9 100 200
	
	100 100 200
	
	200 9 100
	Respondido em 03/05/2021 06:20:32
	
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
	
	
	 
		8
          Questão
	
	
	Para a criação de uma Fila seqüencial basta iniciar as variáveis de início e final, ou seja, apontá-las para as posições iniciais do vetor. O que alteraria na rotina de inserir se a variável final fosse inicializada com o valor -1 (menos um):
		
	
	Após a inserção deve-se fazer o incremento da variável final
	 
	Antes da inserção deve-se fazer o incremento da variável final
	
	Após a inserção deve-se fazer o decremento da variável final
	
	Antes da inserção deve-se fazer o decremento da variável finalApós a inserção deve-se fazer o incremento da variável inicio
	 
		1
          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 está correta
	 
	IV e V estão corretas.
	
	I e II estão corretas.
	
	III e V estão corretas
	
	I e IV estão corretas
	Respondido em 19/04/2021 15:35:38
	
		
	Gabarito
Comentado
	
	
	 
		2
          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 != null)pt=pt->próximo;
	
	while(pt->próximo != null)pt=pt->próximo->proximo;
	
	while(pt->próximo->proximo)pt=pt->próximo;
	 
	while(próximo)pt=próximo;
	 
	while(pt->próximo)pt=pt->próximo;
	Respondido em 19/04/2021 15:37:07
	
Explicação:
O código será:
while(pt->próximo)pt=pt->próximo;
	
	
	 
		3
          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 29.
	 
	11 e 29.
	 
	11 e 80.
	
	4 e 80.
	
	7 e 40.
	Respondido em 19/04/2021 15:38:17
	
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
	
	
	 
		4
          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 20
	
	20 5 8
	
	10 3 5 8 20
	
	5 8
	 
	10 3 20
	Respondido em 19/04/2021 15:39:17
	
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
	
	
	 
		5
          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;
	
	no *p -> new no;
	
	p *no=new no;
	
	p *no -> new no;
	Respondido em 19/04/2021 15:40:58
	
		
	Gabarito
Comentado
	
	
	 
		6
          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ó.
	
	Não é necessário alocar memória com new. Basta criar uma struct do tipo no, armazenar o resto da divisão número por 2 no campo dado e aterrar o campo link.
	
	É preciso armazenar o resto da divisão do número por 2 no campo dado do primeiro nó da lista e retornar o ponteiro para este nó.
	 
	É preciso alocar memória com new, armazenar o resto da divisão do número por 2 no campo dado do novo nó, apontar o link do novo nó para o início da lista e enfim, retornar o ponteiro para o novo nó.
	 
	Basta alocar memória com new e armazenar o resto da divisão do número por 2 no campo dado do novo nó .
	Respondido em 19/04/2021 15:42:07
	
		
	Gabarito
Comentado
	
	
	 
		7
          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;        
}
		
	
	RemoveNo
	 
	ListaNo
	
	InsereNoFim
	
	BuscaNaLista
	 
	InsereNoFrente
	Respondido em 19/04/2021 15:51:29
	
		
	Gabarito
Comentado
	
	
	 
		8
          Questão
	
	
	Sobre as estruturas de dados existentes podemos afirmar que:
		
	
	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 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.
	
	Na estrutura do tipo LIFO, as informações são inseridas no início e removidas do final.
	Respondido em 19/04/2021 15:52:13
	
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.
		1
          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
	 
	IV e V estão corretas.
	
	I e II estão corretas.
	
	I e IV estão corretas
	
	III está correta
	Respondido em 03/05/2021 06:20:57
	
		
	Gabarito
Comentado
	
	
	 
		2
          Questão
	
	
	Seja o seguinte exemplo de nodo de uma lista de encadeada:
 
struct nodo{
                     float valor;
                     stringproduto;
                     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 != null)pt=pt->próximo;
	
	while(pt->próximo->proximo)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 03/05/2021 06:21:04
	
Explicação:
O código será:
while(pt->próximo)pt=pt->próximo;
	
	
	 
		3
          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 29.
	
	11 e 80.
	 
	11 e 29.
	
	4 e 80.
	
	7 e 40.
	Respondido em 03/05/2021 06:21:12
	
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
	
	
	 
		4
          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
	
	20 5 8
	
	5 8
	
	10 3 5 8 20
	 
	5 8 20
	Respondido em 03/05/2021 06:21:17
	
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
	
	
	 
		5
          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;
	
	p *no -> new no;
	 
	no *p=new no;
	Respondido em 03/05/2021 06:21:23
	
		
	Gabarito
Comentado
	
	
	 
		6
          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 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 e armazenar o resto da divisão do número por 2 no campo dado do novo nó .
	
	Não é necessário alocar memória com new. Basta criar uma struct do tipo no, armazenar o resto da divisão número por 2 no campo dado e aterrar o campo link.
	
	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ó.
	Respondido em 03/05/2021 06:21:28
	
		
	Gabarito
Comentado
	
	
	 
		7
          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
	
	BuscaNaLista
	
	InsereNoFim
	
	RemoveNo
	
	ListaNo
	Respondido em 03/05/2021 06:21:32
	
		
	Gabarito
Comentado
	
	
	 
		8
          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.
	
	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 FIFO, as informações são inseridas no início e removidas do final.
	Respondido em 03/05/2021 06:21:38
	
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.
	 
		1
          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.
		
	
	p *no=new no;
	
	p *no -> new no;
	
	no p -> new no;
	 
	no *p=new no;
	
	no *p -> new no;
	Respondido em 03/05/2021 06:22:55
	
		
	Gabarito
Comentado
	
	
	 
		2
          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;        
}
		
	
	RemoveNo
	
	BuscaNaLista
	 
	InsereNoFrente
	
	ListaNo
	
	InsereNoFim
	Respondido em 03/05/2021 06:23:00
	
		
	Gabarito
Comentado
	
	
	 
		3
          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çãode 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(pt != null)pt=pt->próximo;
	
	while(pt->próximo != null)pt=pt->próximo->proximo;
	
	while(pt->próximo->proximo)pt=pt->próximo;
	
	while(próximo)pt=próximo;
	Respondido em 03/05/2021 06:23:03
	
Explicação:
O código será:
while(pt->próximo)pt=pt->próximo;
	
	
	 
		4
          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 29.
	 
	11 e 29.
	
	11 e 80.
	
	7 e 40.
	
	4 e 80.
	Respondido em 03/05/2021 06:23:08
	
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
	
	
	 
		5
          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 5 8 20
	
	5 8
	
	20 5 8
	 
	5 8 20
	
	10 3 20
	Respondido em 03/05/2021 06:23:13
	
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
	
	
	 
		6
          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)
		
	
	I e IV estão corretas
	 
	IV e V estão corretas.
	
	I e II estão corretas.
	
	III e V estão corretas
	
	III está correta
	Respondido em 03/05/2021 06:23:18
	
		
	Gabarito
Comentado
	
	
	 
		7
          Questão
	
	
	Sobre as estruturas de dados existentes podemos afirmar que:
		
	
	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 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.
	
	Na estrutura do tipo LIFO, as informações são inseridas no início e removidas do final.
	Respondido em 03/05/2021 06:23:22
	
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.
 
 
	
	
	 
		8
          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 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ó.
	
	É 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, 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.
		1
          Questão
	
	
	                                                                                                                                                                                                                                                                                         Indique as afirmativas verdadeiras e as afirmativas falsas.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
		
	 
	No último elemento de uma lista simplesmente encadeada não circular o campo que guarda o endereço do elemento posterior contém o endereço do primeiro elemento da lista.
	 
	Uma lista simplesmente encadeada possui apenas um ponteiro, em cada nó,  que guarda o endereço do  próximo nó da lista.
	 
	É possível implementar um algoritmo de listagem dos dados de uma lista duplamente encadeada utilizando a mesma lógica de um algoritmo de listagem de uma lista simplesmente encadeada.
	 
	No primeiro elemento de uma lista duplamente encadeada,  o campo que guarda o endereço do elemento anterior contém o endereço do último elemento da lista.
	 
	Uma lista duplamente encadeada possui dois ponteiros, sendo um responsável por armazenar o endereço do elemento anterior  e outro responsável por armazenar o endereço do elemento posterior.
	Respondido em 19/04/2021 15:53:05
	
Explicação:
Uma lista simplesmente encadeada possui apenas um ponteiro, em cada nó,  que guarda o endereço do  próximo nó da lista.
Verdadeiro, por definição de lista simplesmente encadeada.
 
Uma lista duplamente encadeada possui dois ponteiros, sendo um responsável por armazenar o endereço do elemento anterior  e outro responsável por armazenar o endereço do elemento posterior.
Verdadeiro, por definição de lista duplamente encadeada
 
No primeiroelemento de uma lista duplamente encadeada,  o campo que guarda o endereço do elemento anterior contém o endereço do último elemento da lista.
Falso.  O ponteiro à esquerda do 1o. no é NULL.
No último elemento de uma lista simplesmente encadeada não circular o campo que guarda o endereço do elemento posterior contém o endereço do primeiro elemento da lista.
FAlso.  Em uma lista simplesmente encadeada não circular o último ponteiro é NULL.
 
É possível implementar um algoritmo de listagem dos dados de uma lista duplamente encadeada utilizando a mesma lógica de um algoritmo de listagem de uma lista simplesmente encadeada.
Verdadeiro, por definição de lista simplesmente encadeada  e por definição de lista duplamente encadeada.
	
	
	 
		2
          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;
		
	
	Fila
	
	Lista encadeada
	
	Matriz
	 
	Lista duplamente encadeada
	
	Pilha
	Respondido em 19/04/2021 15:55:16
	
	
	 
		3
          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  :
		
	
	Árvore
	
	Grafo
	 
	Listas Duplamente Encadeadas
	
	Listas simplesmente encadeadas
	
	Listas Circulares
	Respondido em 19/04/2021 15:55:35
	
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.
	
	
	 
		4
          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 o percurso do ponteiro p da esquerda para direita.
	 
	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.
	Respondido em 19/04/2021 15:57:25
	
		
	Gabarito
Comentado
	
	
	 
		5
          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 simplesmente encadeada cada nó aponta para um único nó enquanto a lista duplamente encadeada aponta para mais de um nó.
	
	Em uma lista simplesmente encadeada cada nó aponta para nó seguinte e para o nó anterior.
	
	Em uma lista duplamente encadeada cada nó aponta para nó seguinte.
	
	Em uma lista duplamente encadeada, cada nó aponta para um nó enquanto a lista simplesmente encadeada aponta para mais de um nó.
	Respondido em 19/04/2021 15:58:17
	
		
	Gabarito
Comentado
	
	
	 
		6
          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;
	
	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;
	
	t=p;
p->esq = p->dir;
p->dir = p->esq;
	Respondido em 19/04/2021 16:00:55
	
Explicação:
O código pedido é:
t=p->dir;
p->dir = p->esq;
p->esq = t;
	
	
	 
		7
          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 final da lista e nunca no começo ou 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 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 cheia.
	Respondido em 19/04/2021 16:01:44
	
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.   
	
	
	 
		8
          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______.
		
	 
	Alocação dinâmica de memória
	
	Alocação estática de memória
	
	Declaração de vetor
	
	Declaração de função
	
	Declaração de matriz
	Respondido em 19/04/2021 16:02:35
	
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.
	 
		1
          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 03/05/2021 06:23:44
	
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.
	 >> 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 umalista 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.
	 
	
	
	 
		2
          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.
	
	Em uma lista duplamente encadeada, cada nó aponta para um nó enquanto a lista simplesmente encadeada aponta para mais de um nó.
	 
	Em uma lista simplesmente encadeada cada nó aponta para um único nó enquanto a lista duplamente encadeada aponta para mais de um nó.
	
	Em uma lista duplamente encadeada cada nó aponta para nó seguinte e para o primeiro nó da fila.
	
	Em uma lista simplesmente encadeada cada nó aponta para nó seguinte e para o nó anterior.
	Respondido em 03/05/2021 06:23:49
	
		
	Gabarito
Comentado
	
	
	 
		3
          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:
		
	
	Y, antes do Z, e X, antes do Y.
	
	X, antes do Z, e Y, logo após o Z.
	
	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 03/05/2021 06:23:54
	
		
	Gabarito
Comentado
	
	
	 
		4
          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 Circulares
	
	Árvore
	
	Grafo
	 
	Listas Duplamente Encadeadas
	
	Listas simplesmente encadeadas
	Respondido em 03/05/2021 06:23:59
	
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.
	
	
	 
		5
          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______.
		
	 
	Alocação dinâmica de memória
	
	Declaração de função
	
	Declaração de vetor
	
	Declaração de matriz
	
	Alocação estática de memória
	Respondido em 03/05/2021 06:24:01
	
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.
	
	
	 
		6
          Questão
	
	
	Em uma lista linear duplamente encadeada.
		
	
	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.
	
	O ponteiro do "último" nó não é NULL, mas sim aponta de volta para o "primeiro" nó da lista.
	
	O ponteiro do "primeiro" nó não é NULL, mas sim aponta de volta para o "primeiro" nó da lista, formando um ciclo.
	Respondido em 03/05/2021 06:24:06
	
		
	Gabarito
Comentado
	
	
	 
		7
          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 03/05/2021 06:24:11
	
		
	Gabarito
Comentado
	
	
	 
		8
          Questão
	
	
	Com relação à lista duplamente encadeada, é correto afirmar que :
		
	 
	A lista pode ser  percorrida com igual facilidade para a direita ou para a esquerda, pois existem dois ponteiros.
	
	          A lista precisa ter sempre um ponteiro apontando para o 1º. nó
	
	Não pode ser vazia.
	
	Não pode haver remoções no meio da lista.
	
	Consome  menos memória do que uma lista simplesmente encadeada, se tivermos uma mesma aplicação.
		1
          Questão
	
	
	Uma estrutura de dados em lista duplamente encadeada permite na cadeia movimentos para
		
	
	trás, apenas.
	
	frente, apenas.
	
	cima e para baixo, apenas.
	
	cima e para baixo ou para frente e para trás.
	 
	frente e para trás, apenas.
	Respondido em 03/05/2021 06:24:26
	
		
	Gabarito
Comentado
	
	
	 
		2
          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 epara o último.
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:
		
	
	F,F,V,V,V
	
	V,F,V,F,V
	 
	V,F,F,F,V
	
	V,F,F,V,F
	
	F,V,V,F,F
	Respondido em 03/05/2021 06:24:30
	
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
	
	
	 
		3
          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 sequencial, os dados são heterogêneos e os nós da lista podem ter tamanhos diferentes, mas exigem espaço em endereço contíguo de memória.
	
	Existem várias formas de apresentação de listas lineares, como listas circulares e as matrizes, que são formas exclusivas das listas de alocação encadeada.
	 
	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 03/05/2021 06:24:37
	
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)
	
	
	 
		4
          Questão
	
	
	Uma estrutura de dados em lista duplamente encadeada permite na cadeia movimentos para:
		
	
	Para cima e para baixo, apenas.
	
	Para frente, apenas.
	
	Para cima e para baixo ou para frente e para trás.
	 
	Para frente e para trás, apenas.
	
	Para trás, apenas.
	Respondido em 03/05/2021 06:24:42
	
Explicação:
A resposta é simples assim.
	
	
	 
		5
          Questão
	
	
	                                                                                                                                                                                                                                                                                         Indique as afirmativas verdadeiras e as afirmativas falsas.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
		
	 
	No último elemento de uma lista simplesmente encadeada não circular o campo que guarda o endereço do elemento posterior contém o endereço do primeiro elemento da lista.
	 
	Uma lista simplesmente encadeada possui apenas um ponteiro, em cada nó,  que guarda o endereço do  próximo nó da lista.
	 
	No primeiro elemento de uma lista duplamente encadeada,  o campo que guarda o endereço do elemento anterior contém o endereço do último elemento da lista.
	 
	Uma lista duplamente encadeada possui dois ponteiros, sendo um responsável por armazenar o endereço do elemento anterior  e outro responsável por armazenar o endereço do elemento posterior.
	 
	É possível implementar um algoritmo de listagem dos dados de uma lista duplamente encadeada utilizando a mesma lógica de um algoritmo de listagem de uma lista simplesmente encadeada.
	Respondido em 03/05/2021 06:24:57
	
Explicação:
Uma lista simplesmente encadeada possui apenas um ponteiro, em cada nó,  que guarda o endereço do  próximo nó da lista.
Verdadeiro, por definição de lista simplesmente encadeada.
 
Uma lista duplamente encadeada possui dois ponteiros, sendo um responsável por armazenar o endereço do elemento anterior  e outro responsável por armazenar o endereço do elemento posterior.
Verdadeiro, por definição de lista duplamente encadeada
 
No primeiro elemento de uma lista duplamente encadeada,  o campo que guarda o endereço do elemento anterior contém o endereço do último elemento da lista.
Falso.  O ponteiro à esquerda do 1o. no é NULL.
No último elemento de uma lista simplesmente encadeada não circular o campo que guarda o endereço do elemento posterior contém o endereço do primeiro elemento da lista.
FAlso.  Em uma lista simplesmente encadeada não circular o último ponteiro é NULL.
 
É possível implementar um algoritmo de listagem dos dados de uma lista duplamente encadeada utilizando a mesma lógica de um algoritmo de listagem de uma lista simplesmente encadeada.
Verdadeiro, por definição de lista simplesmente encadeada  e por definição de lista duplamente encadeada.
	
	
	 
		6
          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 possibilitam o percursodo ponteiro p da esquerda para direita.
	
	As operações possibilitam a busca de um nodo apontado pelo ponteiro p.
	 
	As operações removem o nodo apontado pelo ponteiro p.
	
	As operações inserem novo nodo, após o nodo apontado pelo ponteiro p.
	
	As operações possibilitam o percurso do ponteiro p da direita para esquerda.
	Respondido em 03/05/2021 06:25:04
	
		
	Gabarito
Comentado
	
	
	 
		7
          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 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 esquerda para direita.
	 
	As operações removem o nodo apontado pelo ponteiro p.
	
	As operações possibilitam o percurso do ponteiro p da direita para esquerda.
	Respondido em 03/05/2021 06:25:12
	
	
	 
		8
          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 *insereInicio(listaDE *LISTA, int valor); 
	
	void exibeIpF(listaDE *LISTA);
	
	listaDE *remove(listaDE *LISTA, int valor);
	
	listaDE *insereFim(listaDE *LISTA, int valor);
	
	listaDE *busca (listaDE *LISTA, int valor);

Mais conteúdos dessa disciplina