Buscar

ESTRUTURA DE DADOS GABARITO 2017

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 36 páginas

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 36 páginas

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 36 páginas

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Em relação a estruturas de dados, avalie a correspondência existente entre as estruturas 
de dados Lineares e Não Lineares com suas respectivas coleções de dados. 
 
 
A correta associação entre os elementos das duas tabelas é: 
 
 
 a1, b1, c2, d1 
 
a1, b2, c1, d1. 
 
a2, b2, c1, d2. 
 a2, b1, c2, d1. 
 
a1, b1, c2, d2. 
 
 Gabarito Comentado 
 
 
 
 
 2a Questão (Ref.: 201609726488) Fórum de Dúvidas (1) Saiba (1) 
 
A forma correta para imprimir o valor do último elemento de um vetor v com n posições é: 
 
 
cout << v[n]; 
 
cout << v[n+1]; 
 cout << v[ultimo]; 
 cout << v[n-1]; 
 
cin >> v[-1]; 
 
 
 
 
 
 3a Questão (Ref.: 201609762420) Fórum de Dúvidas (1) Saiba (1) 
 
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 
 
Todas as alternativas estão corretas. 
 
As alternativas III e IV estão corretas. 
 
As alternativas II e IV estão corretas. 
 
As alternativas I e III estão corretas. 
 
 
 
 
 
 4a Questão (Ref.: 201609148523) Fórum de Dúvidas (1 de 1) Saiba (1 de 1) 
 
Podemos dizer que estrutura de dados é: 
 
 O meio para armazenar e organizar dados com o objetivo de facilitar o acesso e as modificações. 
 
A entrada, que satisfaz a quaisquer restrições impostas pelo problema, necessária para se calcular uma 
solução do problema. 
 
É a saída, que satisfaz a quaisquer restrições impostas pelo problema, necessária para se calcular uma 
solução do problema. 
 
Uma sequência de passos computacionais que transforma uma entrada em uma saída previamente 
determinada. 
 
O que permite o armazenamento e a recuperação de dados independentemente de seu conteúdo. 
 
 Gabarito Comentado 
 
 
 
 
 5a Questão (Ref.: 201609148530) Fórum de Dúvidas (1) Saiba (1) 
 
Estão entre algumas das possíveis formas de se estruturar dados: 
 
 Grafos, lista ordenada, vetores. 
 
Grafos, lista ordenada, algoritmos. 
 
Grafos, algoritmos, fila. 
 
Lista encadeada, vetores, algoritmos. 
 
Algoritmos, lista ordenada, vetores. 
 
 Gabarito Comentado 
 
 
 
 
 6a Questão (Ref.: 201609739791) Fórum de Dúvidas (1) Saiba (1) 
 
 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 ? 
 
 Fila 
 Árvore 
 
 Pilha 
 Lista 
 Grafo 
 
 
 
 
 
 7a Questão (Ref.: 201609762448) Fórum de Dúvidas (1) Saiba (1) 
 
As estruturas de dados são utilizadas para manter dados ou informações organizados na memória, o que 
possibilita a otimização do uso destes dados. Porém, as estruturas guardam características especiais na 
manipulação destes dados, assim deve-se escolher a estrutura certa ou mais adequada para uma determinada 
aplicação. Portanto marque a opção que representa a melhor estrutura, quando se tem como requisitos 
principais o acesso aleatório aos dados e alocação destes de forma contínua na memória. 
 
 
Pilha Encadeada 
 Lista Sequencial 
 
Pilha Sequencial 
 
Lista Encadeada 
 
Fila Sequencial 
 
 
 
 
 
 8a Questão (Ref.: 201609148900) Fórum de Dúvidas (1 de 1) Saiba (1 de 1) 
 
As estruturas de dados são importantes para a programação porque facilitam a pesquisa, pois permitem a 
ordenação dos dados de forma crescente ou decrescente. Dessa forma, assinale a alternativa correta que define 
um tipo de dado estruturado. 
 
 
Podem armazenar apenas um valor de cada vez, se algum valor for atribuído o anterior é apagado. 
 Permitem agregar mais do que um valor em uma variável, existindo uma relação estrutural entre seus 
elementos. 
 
Também são denominados tipos primitivos, não é possível decompor em partes menores. 
 
Consiste da definição do conjunto de valores (denominado domínio) que uma variável pode assumir ao 
longo da execução de um programa. 
 
São tipos de dados indivisíveis. 
 
 
As variáveis em programação são utilizadas para armazenar um valor de determinado tipo em um espaço 
reservado na memória. Em algumas linguagens de programação podemos declarar, ou seja, reservar um espaço 
na memória, fora do escopo da função principal, e fora do escopo de qualquer outra função. Ao fazer a 
declaração desta forma estamos declarando uma variável do tipo: 
 
 
Local 
 Global 
 
Real 
 
Constante 
 
Inteiro 
 
 Gabarito Comentado 
 
 
 
 
 2a Questão (Ref.: 201609388698) Fórum de Dúvidas (1) Saiba (1) 
 
 
 
 O programa executa perfeitamente independente da ordem das funções já que 
existem os seus protótipos. 
 O programa não executa corretamente pois as funções devem ser descritas antes 
da função main(), para que o compilador consiga reconhecê-las. 
 O programa não executa corretamente, pois o protótipo da função media( ) não 
apresenta a identificação dos parâmetros, mas apenas os tipos dos mesmos. 
 O programa não executa corretamente, pois os protótipos estão fora da ordem em 
que as funções são descritas. 
 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( ). 
 
 Gabarito Comentado 
 
 
 
 
 3a Questão (Ref.: 201609148914) Fórum de Dúvidas (1) Saiba (1) 
 
Com a utilização das estruturas de dados e seus tipos, em algumas situações é imprescindível a criação de 
funções que façam determinada verificação ou ação nestas estruturas. Dessa forma, analise a função abaixo e 
marque corretamente a alternativa que descreve as funcionalidades desta. 
int funcao(float v[], float vl, int n) 
{ 
 for (int i = 0; i < n; i++) 
 if (v[i] == vl) 
 return i; 
 return -1; 
} 
 
 
Resulta em erro, se o valor de vl não estiver dentro de v. 
 Retorna a posição de v se o valor vl foi encontrado. 
 
Retorna -1 se o valor de n foi encontrado. 
 
Retorna o valor de vl se o valor n foi encontrado.Retorna -1 se o valor de vl estiver dentro de v. 
 
 Gabarito Comentado 
 
 
 
 
 4a Questão (Ref.: 201609762438) Fórum de Dúvidas (1) Saiba (1) 
 
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 funções 
 
Os Vetores 
 
As Filas 
 
Os Grafos 
 
As Estruturas de Dados 
 
 
 
 
 
 5a Questão (Ref.: 201609148917) Fórum de Dúvidas (1 de 1) Saiba (1 de 1) 
 
Em programação podemos utilizar um recurso que modulariza o programa chamado função. As funções 
precisam ser ativadas para que possam ser executadas. Para isso, é necessário chamar a função pelo seu nome 
e enviar, quando necessário, os valores respectivos para os parâmetros de entrada. Ao enviar os valores para os 
parâmetros de entrada, o programa pode fazer uma cópia deste valor ou trabalhar em um endereço enviado. 
Quando se envia o endereço estamos ativando a função por meio de: 
 
 
Envio de valor. 
 
Registro. 
 
Envio de inteiro. 
 
Passagem por valor. 
 Ponteiros. 
 
 Gabarito Comentado 
 
 
 
 
 6a Questão (Ref.: 201609712708) Fórum de Dúvidas (1 de 1) Saiba (1 de 1) 
 
Na passagem por ____________________ , o endereço da variável da função chamadora é passado para a 
função chamada e, dessa forma, o valor poderá ser alterado, ou não. 
 
 
número 
 
valor 
 
caracter 
 
void 
 referência 
 
 
 
 
 
 7a Questão (Ref.: 201609737191) Fórum de Dúvidas (1) Saiba (1) 
 
Blocos únicos de códigos que realizam diversas tarefas distitintas são de dificil manutenção. Portanto, utiliza-se 
a tecnica da modularização de programas, a fim de facilitar a implementação e a manutenção dos programas. 
Esta técnica, também chamada de modularização, tem como principal elemento: 
 
 
As Estruturas de Dados 
 
Os Grafos 
 As funções 
 
Os Vetores 
 
As Filas 
 
 
 
 
 
 8a Questão (Ref.: 201609731310) Fórum de Dúvidas (1 de 1) Saiba (1 de 1) 
 
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, int); 
 int func (int a, int &b); 
 void func (int a, int &b); 
 
int func (int &a, int b); 
 
Qual das seguintes estruturas de dados é classificada como heterogênea? 
 
 
Vetor 
 
Loop 
 
Fila 
 
Pilha 
 Registro 
 
 Gabarito Comentado 
 
 
 
 
 2a Questão (Ref.: 201609788232) Fórum de Dúvidas (0) Saiba (0) 
 
Pode-se definir uma estrutura heterogênea como sendo um conjunto de elementos, geralmente, 
agrupados sob uma lógica e associados por um nome. 
Esses elementos podem ser variáveis simples, matrizes ou ainda outras estruturas. Seja a definição de 
uma estrutura como: 
 
 struct aluno { 
 string nome; 
 float nota; 
}; 
 
Suponha ainda que exista um vetor desta estrutura, definido como: 
 aluno vet [ 100]; 
 
Marque a alternativa em que é atribuída de forma correta a nota 5.7 para o décimo primeiro elemento 
deste vetor. 
 
 
vet[10]=aluno.5.7; 
 
aluno.vet[10].nota=5.7; 
 vet[10].nota=5.7; 
 
aluno.vet[10]=5.7; 
 
vet[10].aluno.nota=5.7 ; 
 
 
 
 
 
 3a Questão (Ref.: 201609820482) Fórum de Dúvidas (0) Saiba (0) 
 
Marque a opção correta, considerando 
 
struct Livro { 
int codigo; 
float preco; 
} liv; 
 
 
Livro.codigo = 12345; 
 liv.preco = 30.70; 
 
liv->preco = 30.70; 
 
Livro.liv.codigo = 12345; 
 
Livro->liv.codigo = 12345; 
 
 
 
 
 
 4a Questão (Ref.: 201609148885) Fórum de Dúvidas (0) Saiba (0) 
 
A armazenagem de dados pode ocorrer temporariamente em uma variável, um vetor ou em uma estrutura 
chamada Struct na linguagem C e C++. Como se procede a atribuição de valor a um determinado campo de 
uma estrutura do tipo Struct? 
 
 
Nome da estrutura vírgula tipo do campo 
 
Nome da estrutura ponto tipo do campo 
 
Nome da estrutura seta nome do campo 
 
Nome da estrutura seta tipo do campo 
 Nome da estrutura ponto nome do campo 
 
 Gabarito Comentado 
 
 
 
 
 5a Questão (Ref.: 201609353593) Fórum de Dúvidas (0) Saiba (0) 
 
Com relação à struct, é correto afirmar que : 
 
 Cada elemento da struct é denominado membro ou campo, sendo que a struct pode 
armazenar elementos de tipos diferentes ou não. 
 Não é possível criar um vetor de structs, pois o vetor trabalha apenas com dados do 
mesmo tipo. 
 A struct é sempre definida dentro da main. 
 Cada elemento da struct é chamado campo e cada campo deve ser, obrigatoriamente, 
de um tipo de dados distinto de outro campo. 
 Cada elemento da struct é chamado componente. 
 
 Gabarito Comentado 
 
 
 
 
 6a Questão (Ref.: 201609718754) Fórum de Dúvidas (0) Saiba (0) 
 
Pode-se definir uma estrutura heterogênea como sendo um conjunto de elementos, geralmente, agrupados sob 
uma lógica e associados por um nome. Esses elementos podem ser variáveis simples, matrizes ou ainda outras 
estruturas. Seja a definição de uma estrutura como: struct aluno { string nome; float media; }; Suponha ainda 
que exista um vetor desta estrutura, definido como: aluno vet [ 10]; Marque a alternativa em que é atribuída de 
forma correta a media 6.0 para o quarto elemento deste vetor. 
 
 
vet[3].aluno=6.0; 
 
aluno[3].media=6.0; 
 
aluno[3].10=6.0; 
 
aluno[10]=6.0; 
 vet[3].media=6.0; 
 
 
 
 
 
 7a Questão (Ref.: 201609762443) Fórum de Dúvidas (0) Saiba (0) 
 
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ídade forma correta a nota 5.7 para o décimo primeiro elemento deste 
vetor. 
 
 
vet[10]=aluno.5.7; 
 
aluno.vet[10].nota=5.7; 
 
vet[10].aluno.nota=5.7 ; 
 
aluno.vet[10]=5.7; 
 vet[10].nota=5.7; 
 
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 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 inserção e realiza uma ordenação crescente nos elementos do vetor v. 
 
Que utiliza o método seleção e realiza uma ordenação crescente nos elementos do vetor v. 
 
 
 
 
 
 2a Questão (Ref.: 201609734011) Fórum de Dúvidas (1 de 1) Saiba (0) 
 
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 
 
Ordenação Simples Externa 
 Ordenação Interna 
 
Ordenação Externa 
 
 Gabarito Comentado Gabarito Comentado Gabarito Comentado 
 
 
 
 
 3a Questão (Ref.: 201609151950) Fórum de Dúvidas (1) Saiba (0) 
 
Existem vários algoritmos de busca em estruturas de dados, um destes realiza a busca em vetores, e requer 
acesso aleatório aos elementos desta estrutura e parte do pressuposto de que os dados do vetor estejam 
ordenados e utiliza a técnica de divisão e conquista comparando o elemento desejado com o elemento do meio 
do vetor. Esta técnica ainda verifica se o elemento do meio do vetor for o desejado, a busca termina. Caso 
contrário, se o elemento do meio vier antes do elemento buscado, então a busca continua na metade posterior 
do vetor. E se o elemento do meio vier depois da chave, a busca continua na metade anterior do vetor. O 
algoritmo que utiliza esta metodologia é: 
 
 Pesquisa binária 
 
Pesquisa sequencial 
 
Bolha 
 
Inserção 
 
Seleção 
 
 Gabarito Comentado 
 
 
 
 
 4a Questão (Ref.: 201609737182) Fórum de Dúvidas (1 de 1) Saiba (0) 
 
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 vetor esteja 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,1,4,5 
 
1,4,2,5 
 2,4,1,5 
 
4,1,2,5 
 
1,2,4,5 
 
 Gabarito Comentado 
 
 
 
 
 5a Questão (Ref.: 201609148387) Fórum de Dúvidas (1 de 1) Saiba (0) 
 
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 
 
 
Shellsort 
 
Heapsort 
 
Quicksort 
 
Mergesort 
 Bublesort 
 
 Gabarito Comentado 
 
 
 
 
 6a Questão (Ref.: 201609148550) Fórum de Dúvidas (1 de 1) Saiba (0) 
 
Marque a afirmativa correta para a "inserção incremental". 
 
 
Os pivôs são escolhidos aleatoriamente. 
 
A técnica é boa quando os dados ficam uniformemente distribuídos entre os seus compartimentos. 
 
É um tipo de ordenação por intercalação 
 Consiste em adicionar um valor no vetor, mantendo a ordem existente e ajustando o total de elementos. 
 
É um tipo de sequenciação por intercalação. 
 
 Gabarito Comentado 
 
 
 
 
 7a Questão (Ref.: 201609148893) Fórum de Dúvidas (1 de 1) Saiba (0) 
 
O processo de rearranjar um conjunto de dados em uma ordem crescente ou decrescente é chamado de 
ordenação. Existem várias técnicas de ordenação, entretanto a técnica que procura o menor valor entre todos 
os elementos do vetor e troca-o pelo primeiro elemento; para os n - 1 elementos restantes, determinação do 
elemento de menor valor e troca pelo segundo elemento e assim sucessivamente, é chamado de: 
 
 Seleção 
 
Binária 
 
Inserção 
 
Bolha 
 
Hash 
 
 Gabarito Comentado 
 
 
 
 
 8a Questão (Ref.: 201609151954) Fórum de Dúvidas (1 de 1) Saiba (0) 
 
Existem vários tipos de algoritmos para realizar a ordenação dos elementos, onde um algoritmo de ordenação 
deve rearranjar o vetor de forma a estabelecer uma ordem entre os elementos. Marque a alternativa correta 
que cita o algoritmo cuja descrição é: "considera cada elemento uma vez inserindo-o em seu lugar correto entre 
os elementos que já estão em ordem". E o seu passo a passo pode ser descrito como: "o elemento é inserido 
entre os ordenados movendo-se os elementos maiores que ele uma posição para a direita e posteriormente 
inserindo-o na posição vaga". 
 
 Inserção 
 
Seleção 
 
Bolha 
 
QuickSort 
 
MergeSort 
 
__________________________ é 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 Sequencial 
 
Lista Linear Não Sequencial 
 
Lista Linear de Alocação de Memória 
 
Lista Linear Não Alocada 
 
 
 
 
 
 2a Questão (Ref.: 201609148884) Fórum de Dúvidas (0) Saiba (0) 
 
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 é: 
 
 
Variável 
 
Registro 
 Vetor 
 
Matriz 
 
Função 
 
 GabaritoComentado 
 
 
 
 
 3a Questão (Ref.: 201609140451) Fórum de Dúvidas (0) Saiba (0) 
 
Um órgão público adotou dois sistemas de senhas para atender os cidadãos na ordem de chegada. O sistema I 
atende os não idosos. O sistema II atende os idosos. Nessa situação: 
 
 
o sistema I, adota o esquema LIFO de organização de dados e o II, o esquema LIFO. 
 
tanto o sistema I, quanto o II, adotam o esquema vetor de organização de dados. 
 tanto o sistema I, quanto o II, adotam o esquema LIFO de organização de dados. 
 tanto o sistema I, quanto o II, adotam o esquema FIFO de organização de dados. 
 
o sistema I, adota o esquema LIFO de organização de dados e o II, o esquema FIFO. 
 
 Gabarito Comentado 
 
 
 
 
 4a Questão (Ref.: 201609148905) Fórum de Dúvidas (0) Saiba (0) 
 
Analisando o trecho do algoritmo abaixo, 
 
pode-se afirmar que se trata de uma operação de: 
 
 
Remoção de um elemento de uma estrutura LIFO 
 Inserção de um elemento em uma estrutura LIFO 
 
Inserção de um elemento em uma estrutura FIFO 
 
Exibição de um elemento em uma estrutura LIFO 
 
Remoção de um elemento de uma estrutura FIFO 
 
 Gabarito Comentado 
 
 
 
 
 5a Questão (Ref.: 201609796427) Fórum de Dúvidas (0) Saiba (0) 
 
Considere uma lista com n livros, em que cada livro é modelado pela struct : 
 
struct Livro { 
 string titulo, editora, autor; 
 float preco; 
}; 
 
A função X abaixo 
 
void X (Livro v[ ], int &n, Livro L) 
{ 
 v[n] = L; 
 n++; 
 cout << "Operação realizada com sucesso."; 
} 
 
implementa a operação de : 
 
 Busca 
 Inserção 
 Substituição 
 Ordenação por inserção 
 Inicialização 
 
 Gabarito Comentado 
 
 
 
 
 6a Questão (Ref.: 201609351158) Fórum de Dúvidas (0) Saiba (0) 
 
As estruturas de dados são utilizadas para manter dados ou informações organizados na memória, o que 
possibilita a otimização do uso destes dados. Porém, as estruturas guardam características especiais na 
manipulação destes dados, assim deve-se escolher a estrutura certa ou mais adequada para uma determinada 
aplicação. Portanto marque a opção que representa a melhor estrutura, quando se tem como requisitos 
principais o acesso aleatório aos dados e alocação destes de forma contínua na memória. 
 
 Fila Sequencial 
 
Pilha Sequencial 
 
Pilha Encadeada 
 
Lista Encadeada 
 Lista Sequencial 
 
 Gabarito Comentado 
 
 
 
 
 7a Questão (Ref.: 201609148361) Fórum de Dúvidas (0) Saiba (0) 
 
O que acontece ao se inserir uma informação quando já usamos toda a área disponível do vetor (topo = fim)? 
 
 overflow 
 
underflow 
 
inclusão 
 
remoção 
 
ordenação 
 
 Gabarito Comentado 
 
 
 
 
 8a Questão (Ref.: 201609148741) Fórum de Dúvidas (0) Saiba (0) 
 
Com relação as listas lineares sequenciais: 
I - Uma lista linear sequencial é um vetor em linguagens estruturadas, também chamado de array. 
II - Um elemento de uma lista linear sequencial pode ser acessado diretamente através de um índice. 
III - Uma lista linear sequencial pode ter elementos de um mesmo tipo, ou de tipos diferentes. 
 
 
Apenas as afirmações II e III estão corretas. 
 
Apenas a afirmação I está correta. 
 
Apenas as afirmações II está corretas. 
 
Apenas as afirmações I e III estão corretas. 
 Apenas as afirmações I e II estão corretas. 
 
 Gabarito Comentado 
 
 
Na pequena pizzaria de Dom Leopoldo os pedidos são anotados em uma planilha e assim que montam um lote 
com 5 pizzas, as entregas começam. As pizzas são organizadas no veículo de entrega respeitando a ordem da 
entrega, ou seja, a 1a. pizza a ser entregue fica na frente de todas e assim, sucessivamente. Dessa forma, a 
última pizza a ser entregue ficará no final do veículo, após todas as outras pizzas. Qual a estrutura de dados é 
mais adequada para modelar a organização das pizzas no veículo de entrega ? 
 
 
lista 
 
grafo 
 
árvore 
 pilha 
 
fila 
 
 Gabarito Comentado 
 
 
 
 
 2a Questão (Ref.: 201609216006) Fórum de Dúvidas (0) Saiba (0) 
 
A estrutura de dados do tipo pilha (stack) é um tipo abstrato de dado baseada no princípio: 
 
 
Da indiferença. 
 
First In First Out (FIFO). 
 Last In First Out (LIFO). 
 
De dividir para conquistar. 
 
Da localidade de referência. 
 
 Gabarito Comentado 
 
 
 
 
 3a Questão (Ref.: 201609216009) Fórum de Dúvidas (0) Saiba (0) 
 
Quando as inserções e as remoções ocorrem sempre no mesmo lado da lista, trata-se de uma estrutura de 
dados denominada. 
 
 
Lista encadeada. 
 
Vetor. 
 
Lista circular. 
 
Fila. 
 Pilha. 
 
 Gabarito Comentado 
 
 
 
 
 4a Questão (Ref.: 201609351160) Fórum de Dúvidas (0) Saiba (0) 
 
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? 
 
 
Apenas o 2 
 Nenhum, a pilha estará vazia. 
 
10 e 2 
 
Apenas o 10 
 
7 e 2 
 
 Gabarito Comentado 
 
 
 
 
 5a Questão (Ref.: 201609370481) Fórum de Dúvidas (0) Saiba (0) 
 
Um programador recebeu a tarefa de construir um programa que receba uma cadeia de caracteres e verifique 
se esta cadeia de caracteres é um PALÍNDROME, sabendo-se que um PALÍNDROME apresenta a mesma 
sequência de caracteres da esquerda pra direita, quanto da direita para esquerda, marque a opção que possui a 
estrutura de dados mais adequada a este programa. 
 
 Pilha SequencialFila Sequencial 
 
Árvores 
 
Grafos 
 
Lista Sequencial 
 
 Gabarito Comentado 
 
 
 
 
 6a Questão (Ref.: 201609216010) Fórum de Dúvidas (0) Saiba (0) 
 
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; 
 
Base e Topo; 
 PUSH e POP. 
 
PULL e POP; 
 
 Gabarito Comentado 
 
 
 
 
 7a Questão (Ref.: 201609688099) Fórum de Dúvidas (0) Saiba (0) 
 
Observe a função que manipula uma pilha e assuma que TAM é uma constante definida com valor 5. Saiba 
que o nome da função já explícita a finalidade dela. 
 
Considere a chamada da função conforme linha abaixo, sabendo-se que vet é um vetor de tamanho 5 e que 
não tem nenhum valor ainda: 
 
 
Analise as afirmativas abaixo que sugerem correções, ou não, na definição na função e assinale a opção 
que contem as afirmativas corretas. 
 
I Faltou & antes da variável vetor e irá acusar erro. 
II A variável topo está sem tipo. 
III O teste está correto porque o índice do primeiro elemento do vetor em C++ é 1, obrigatoriamente. 
IV Na linha comentada deveria estar presente um comando de atribuição que decrementaria a variável topo. 
V A linha vetor[topo]=valor; está correta. 
 
 I , III e V estão corretas 
 II e V estão corretas 
 I e II estão corretas 
 I, II e IV estão corretas 
 I e III estão corretas 
 
 Gabarito Comentado 
 
 
 
 
 8a Questão (Ref.: 201609140437) Fórum de Dúvidas (0) Saiba (0) 
 
Seja S uma pilha inicialmente vazia. Primeiramente, o elemento A é inserido em S. Em seguida, o elemento B, e 
assim por diante, até a inclusão final do elemento E. Ao término dessas operações, qual elemento estará no 
topo de S? 
 
 
C. 
 
B. 
 
D. 
 
A. 
 E. 
 
Usa-se um vetor para se implementar uma fila sequencial, entretanto se nesta estrutura ocorrer diversas 
operações de remoção e inserção podemos afirmar que: 
 
 A estrutra sofrerá do fenômeno chamado esgotamento de memória e logo não poderá mais ser 
utilizada. A solução é o uso da fila circular. 
 
Um vetor não pode ser usado na implementação de uma fila sequencial apenas em pilhas sequenciais. 
 
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. 
 
A estrutura fila não sofre esgotamento de memória, isto ocorre com as pilhas já que implementam o 
algoritmo LIFO. 
 
 
 
 
 
 2a Questão (Ref.: 201609771276) Fórum de Dúvidas (0) Saiba (0) 
 
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 6 7 
 
4 5 
 
4 5 6 
 
 
 
 
 
 3a Questão (Ref.: 201609351162) Fórum de Dúvidas (0) Saiba (0) 
 
 As filas sequenciais são estruturas de dados utilizadas em diversas aplicações, tais como fila de 
processo, fila de impressão, sistemas de senha etc. Entretanto, nas aplicações onde há muita 
movimentação de dados, inserções e remoções de dados na fila, surgem espaços ociosos que podem 
levar ao fenômeno chamado de esgotamento de memória. Para sanar este problema pode-se substituir 
a fila sequencial por: 
 
 
lista sequencial 
 fila circular 
 
lista circular 
 
pilha circular 
 
pilha sequencial 
 
 Gabarito Comentado 
 
 
 
 
 4a Questão (Ref.: 201609148398) Fórum de Dúvidas (0) Saiba (0) 
 
Um banco adotou dois sistemas de senhas para atender os cidadãos na ordem de chegada. O sistema I atende 
todas pessoas que não possuem atendimento prioritário. O sistema II atende somente pessoas com 
atendimento prioritário. Nessa situação, 
 
 
Tanto o sistema I, quanto o II, adota o esquema lista duplamente encadeada de organização de 
dados. 
 Tanto o sistema I, quanto o II, adota o esquema FIFO de organização de dados. 
 
Tanto o sistema I, quanto o II, adota o esquema LIFO de organização de dados. 
 
O sistema I adota o esquema LIFO de organização de dados e o II o esquema FIFO. 
 
O sistema I adota o esquema FIFO de organização de dados e o II, o esquema LIFO. 
 
 
 
 
 
 5a Questão (Ref.: 201609148886) Fórum de Dúvidas (0) Saiba (0) 
 
As estruturas de dados podem ser do tipo estática e dinâmica. As listas são estruturas parecidas com vetores 
podendo ser do tipo dinâmica. Entretanto, existem várias implementações de estruturas do tipo listas. Dessa 
forma, a estrutura que para o acesso de um dado, este precisa estar na saída, caso contrário, precisa remover 
os elementos a sua frente, é chamada de: 
 
 
Matriz 
 
Struct 
 
Pilha 
 Fila 
 
Bolha 
 
 Gabarito Comentado 
 
 
 
 
 6a Questão (Ref.: 201609739885) Fórum de Dúvidas (0) Saiba (0) 
 
 Considere uma fila simples F de inteiros, do tipo Fila definido abaixo. Tal fila deverá armazenar códigos de agentes de uma 
firma de espionagem, desde que haja espaço para um novo agente. Assinale a opção que corretamente desenfileira o código 
de um agente, sabendo que a fila F foi inicializada de acordo com o trecho de código abaixo. 
struct Fila { in t v[100], inicio, fim; } ; 
Fila F; 
F. inicio = 0; 
F.fim = -1; 
 
 
 
 
void desenfileirar(Fila &F) { 
 if (F.fim == -1 && F.inicio == 0) 
 cout << "Não há agentes para retirar. " << endl; 
 else { 
 cout << "Removido o agente " << F.v[F.inicio]; 
 F.inicio++; 
 } 
} 
 
 void desenfileirar(Fila &F) { 
 if (F.inicio > F.fim) 
 cout << "Não há agentes para retirar. " << endl; 
 else { 
 cout << "Removido o agente " << F.v[F.inicio]; 
 F.inicio++; 
 } 
} 
 
 
void desenfileirar(Fila F) { 
 cout << "Removido o agente " << F.v[F.inicio]; 
 F.inicio--; 
 } 
 
 
 
void desenfileirar(Fila &F) { 
 if (F.inicio > F.fim) 
 cout << "Não há agentes para retirar. " << endl; 
 else { 
 cout << "Removido o agente " << F.v[F.inicio]; 
 } 
} 
 
 
void desenfileirar(Fila F) { 
 if (F.inicio > F.fim) 
 cout << "Não há agentes para retirar. " << endl; 
 else { 
 cout << "Removido o agente " << F.v[F.inicio]; 
 F.inicio++; 
 } 
} 
 
 Gabarito Comentado7a Questão (Ref.: 201609361005) Fórum de Dúvidas (0) Saiba (0) 
 
Um aluno do EAD estava estudando para a prova de Estrutura quando viu o trecho 
do programa abaixo em uma apostila. 
 
Como não estava com seu micro, começou a analisar a função entra(...), ficando 
atento a alguns membros da struct. 
Quando finalizou, virou a página da apostila e viu a resposta. Então, ficou muito 
feliz por ter identificado a estrutura 
Assinale a alternativa onde está presente a resposta correta. 
 
 Fila 
 Fila Circular 
 Lista simplesmente encadeada 
 Lista Linear 
 Pilha 
 
 Gabarito Comentado 
 
 
 
 
 8a Questão (Ref.: 201609737186) Fórum de Dúvidas (0) Saiba (0) 
 
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 
Prezado (a) Aluno(a), 
 
Você fará agora seu EXERCÍCIO DE FIXAÇÃO! Lembre-se que este exercício é 
opcional, mas não valerá ponto para sua avaliação. O mesmo será composto de 
questões de múltipla escolha (3). 
Após a finalização do exercício, você terá acesso ao gabarito. Aproveite para se 
familiarizar com este modelo de questões que será usado na sua AV e AVS. 
 
 
1. 
 
 
Qual das inicializações de ponteiros apresentadas abaixo está correta? 
 
 
int *p = new int[]; 
 
int *p = new *int; 
 
int *p = new int; 
 
int *p = new int*; 
 
int *p = create int; 
 
 
 
2. 
 
Dr. Pei Tam possui uma lista não ordenada de pacientes de seu consultório em 
que registra apenas o nome endereço e o telefone de cada paciente. Como 
não há limites para o crescimento de sua lista, como se pode implementar a 
inserção de um novo paciente na lista, sabendo que cada paciente é do tipo 
 
 
Paciente e a lista é do tipo List assim definidos : 
struct Paciente { 
 long int matricula; 
 string nome, endereco e tel; 
}; 
struct List { 
 Paciente p; 
 struct List *link; 
 }; 
 
 
List * inserePac(List *i) { 
 List *novo = new List; 
 Paciente pat; 
 novo->p = pat; 
 novo->link = i; 
 return novo; 
} 
 
List * inserePac(List *i, Paciente pt) 
{ 
 List *novo = new List; 
 novo->p = pt; 
 novo->link =i; 
 return novo; 
} 
 
List * inserePac(List *i, Paciente pt){ 
 List *novo ; 
 novo->p = pt; 
 novo->link = i; 
 return novo; 
} 
 
 List * inserePac(List *i, Paciente pac) 
{ 
 List *novo = new List; 
 novo.p = pac; 
 novo.link = i; 
 return novo; 
} 
 
List insereCliente(List *i, Paciente pac) 
{ 
 List novo[]; 
 novo[0].p = pac; 
 novo[0].link = i; 
 return novo; 
} 
 
 Gabarito Comentado 
 
 
3. 
 
 
Montei uma biblioteca popular que aceita doações sem limites. Marque a opção que 
especifica o tipo de lista e o tipo de alocação de memória mais adequados para este 
problema. 
 
 
 
lista sequencial e alocação dinâmica de memória 
 
fila dinâmica e alocação dinâmica de memória 
 
fila encadeada e alocação dinâmica de memória 
 
lista encadeada e alocação dinâmica de memória 
 
pilha dinâmica e alocação dinâmica de memória 
 
 Gabarito Comentado 
 
 
4. 
 
Assumindo que um valor do tipo inteiro ocupa 4 bytes na memória, e se baseando nas 
linhas de código abaixo, marque a alternativa correta: 
 
 
int *p; 
p = (int *)malloc(20*sizeof(int)); 
 
 
Atribuição ao ponteiro ¿p¿ de um endereço estático de memória 
 
A operação é inválida 
 
Alocação dinâmica de 80 bytes na memória 
 
Alocação dinâmica de espaço de memória suficiente para armazenar 20 x 4 valores 
inteiros 
 
Alocação dinâmica 20 bytes na memória 
 
 
 
5. 
 
 
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. 
 
Somente a afirmativa i esta correta. 
 
Todas as afirmativas estão incorretas. 
 
Todas as afirmativas estão corretas. 
 
 Gabarito Comentado 
 
 
6. 
 
 
Marque a afirmativa que represente uma separação. 
 
 
Intercalar a ordem dos dados da lista do final para o início, atualizando a lista. 
 
Alterar a ordem dos dados da lista do final para o início, atualizando a lista. 
 
Juntar duas listas, colocando uma lista no final de outra, obtendo, ao final, uma só 
lista resultante. 
 
Consiste em dividir a lista em duas outras listas. A quantidade de nós que cada lista 
terá, depende da necessidade. 
 
Organizar os dados da lista em ordem crescente ou decrescente. 
 
 Gabarito Comentado 
 
 
7. 
 
 
Em uma lista linear simplesmente encadeada. 
 
 
Além do campo relativo ao dado, cada nó possui dois ponteiros, 
 
O ponteiro do "primeiro" nó não é NULL, mas sim aponta de volta para o "primeiro" 
nó da lista, formando um ciclo. 
 
Cada ponteiro possui um só endereço que referencia o primeiro nó da lista. 
 
Cada nó possui um só ponteiro que referencia o próximo nó da lista. 
 
O ponteiro do "último" nó não é NULL, mas sim aponta de volta para o "primeiro" nó 
da lista. 
 
 Gabarito Comentado 
 
 
8. 
 
 
Considere 
 
int *ptr, *qtr, *r; 
 
int a = 10, b = 20; 
 
 
 
Após executar cada instrução conforme a ordem dada a seguir : 
 
 
ptr = &a; 
 
qtr = &b; 
 
*ptr = *ptr + *qtr; 
 
++(*qtr); 
 
r = qtr; 
 
qtr = ptr; 
 
 
 
assinale a opção que mostra, correta e respectivamente, os 
valores de *ptr, *qtr , *r , a e b . 
 
 
 
 
30 20 0 30 21 
 
 
 
30 30 21 30 21 
 
30 21 21 10 20 
 
30 20 20 10 20 
 
30 30 21 10 20 
 
 
 
 
 
 
 
 
 
1. 
 
 
Assinale a opção correta. Sobre pilha dinâmica podemos afirmar que 
: 
 
 
 
é recomendada para qualquer tipo de aplicação em que insere-se 
no final e retira-se do início. 
 
usa o critério FIFO, visto que é dinâmica. 
 
usa o critério LIFO e é implementada usando-se listas 
encadeadas. 
 
insere-se em qualquer posição, antes ou após qualquer nó, visto 
que é dinâmica. 
 
só pode ter seus dados impressos no sentido do último nó para o 
primeiro nó. 
 
 Gabarito Comentado 
 
 
2. 
 
 
Estava um aluno estudando Lista Simplesmente Encadeada quando 
encontrou em um site a definição da struct nodo e de uma função 
cujo nome você deverá escolher para substituir XXX nas opções 
abaixo depois que analisar a função, assumindo que teste foi 
realizado, permitindo que a operação fosse realizada. 
 
 struct nodo 
{ 
 int info; 
 struct nodo *prox; 
}; 
nodo* XXX(nodo *ptr, int valor){ 
 nodo *temp = new nodo; 
 ... 
 temp->info = valor; 
 temp->prox = ptr; 
 return temp; 
} 
 
 
 
InsereNoFim 
 
InsereNoFrente 
 
BuscaNaLista 
 
ListaNo 
 
RemoveNo 
 
 Gabarito Comentado 
 
 
 
 
 
 
 
 
 
3. 
 
 
Sobre uma estrutura de dados do tipo LIFO, observe as seguintes afirmações: 
(1) É uma pilha. 
(2) Pode ser uma fila com prioridades 
(3) É uma estrutura onde o primeiro elemento a entrar é o último a sair. 
 
Sobre estas afirmações marque a opção correta: 
 
 
 
Apenas as afirmações (1) e (3) são verdadeiras 
 
Todas as afirmações são verdadeiras 
 
Apenas a afirmação (3) é verdadeira 
 
Apenas a afirmação (1) é verdadeira 
 
Todas as afirmações são falsas 
 
 
 
4. 
 
 
Para converter de decimal para binário usamos a estrutura de dados pilha. 
Assinale a opção que, corretamente, indica as ações corretas para empilhar o 
resto da divisão gerado no processo de conversão, considerando uma lista 
simplesmente encadeada. Considere o tipo definido abaixo : 
 
struct no { 
int dado; 
struct no *link; 
}; 
 
 
 
Basta alocar memória com new, armazenar o resto da divisão do número 
por 2 no campo dado do novo nó e aterrar o link do novo nó. 
 
É preciso armazenar o resto da divisão do número por 2 no campo dado do 
primeiro nó da lista e retornar o ponteiro para este nó. 
 
Não é necessário alocar memória com new. Basta criar uma struct do tipo 
no, armazenar o resto da divisão número por 2 no campo dado e aterrar o 
campo link. 
 
Basta alocar memória com new e armazenar o resto da divisão do número 
por 2 no campo dado do novo nó . 
 
É 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ó. 
 
 Gabarito Comentado 
 
 
5. 
 
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) 
 
 
IV e V estão corretas. 
 
I e IV estão corretas 
 
III está correta 
 
III e V estão corretas 
 
I e II estão corretas. 
 
 Gabarito Comentado 
 
 
6. 
 
 
Assinale a característica que NÃO está relacionada às estruturas de dados 
encadeadas: 
 
 
 
Cada elemento guarda pelo menos um ponteiro para outro elemento da 
estrutura. 
 
A memória ocupada por seus elementos é, em geral, liberada com o uso de 
delete. 
 
A memória para armazenar seus elementos é, em geral, alocada com o uso 
de new. 
 
Em geral, marca-se o último elemento com um ponteiro de valor NULL. 
 
Consomem memória de maneira permanente, só sendo liberadas ao fim do 
programa. 
 
 
 
7. 
 
 
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; 
 
no p -> new no; 
 
no *p -> new no; 
 
no *p=new no; 
 
p *no -> new no; 
 
 
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 percurso do ponteiro p da esquerda para direita. 
 
As operações possibilitam o percurso do ponteiro p da direita para esquerda. 
 
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. 
 
 
 
2. 
 
 
Em uma lista linear duplamente encadeada. 
 
 
Além do campo relativo ao dado, cada nó possui dois ponteiros. 
 
Cada ponteiro possui um só endereço que referencia 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. 
 
O ponteiro do "último" nó não é NULL, mas sim aponta de volta para o 
"primeiro" nó da lista. 
 
 Gabarito Comentado 
 
 
3. 
 
 
Uma estrutura de dados em lista duplamente encadeada permite na cadeia 
movimentos para 
 
 
 
cima e para baixo ou para frente e para trás. 
 
frente e para trás, apenas. 
 
frente, apenas. 
 
trás, apenas. 
 
cima e para baixo, apenas. 
 
 Gabarito Comentado 
 
 
4. 
 
 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; 
 p->elink = novo; 
 p = novo; 
 
 
n 
 
 nodupla *novo; 
 
 novo = new nodupla; 
 novo->dado = valor; 
 novo->dlink = p; 
 if (p != NULL) 
 p->elink = novo; 
 p = novo; 
 
 
 nodupla *novo; 
 
 novo = new nodupla; 
 novo.dado = valor; 
 novo.dlink = p; 
 novo.elink = NULL; 
 if (p != NULL) 
 p.elink = novo; 
 p = novo; 
 
 
n nodupla *novo; 
 
 novo = new nodupla; 
 novo->dado = valor; 
 novo->elink = NULL; 
 if (p != NULL) 
 p->elink = novo; 
 p = novo; 
 
 
 
 nodupla *novo; 
 
 novo = new nodupla; 
 novo->dado = valor; 
 novo->dlink = p; 
 novo->elink = NULL; 
 if (p != NULL) 
 p->elink = novo; 
 p = novo; 
 
 Gabarito Comentado 
 
 
5. 
 
 
Uma estrutura de dados em lista duplamente encadeada permite na cadeia 
movimentos para: 
 
 
 
trás, apenas. 
 
frente e para trás, apenas. 
 
frente, apenas. 
 
cima e para baixo, apenas. 
 
cima e para baixo ou para frente e para trás. 
 
 Gabarito Comentado 
 
 
6. 
 
 
Em relação às estruturas de dados, é correto afirmar: 
 
 
Nos sistemas operacionais, a execução dos processos concorrentes ocorre 
segundo os princípios da estrutura FILO. 
 
Guardar endereço de memória em "nós", normalmente identificados por 
previous ou next, é uma característica presente nas listas duplamente 
encadeadas. 
 
LIFO refere-se à estrutura de dados do tipo pilha, que nada mais é do que 
uma lista linear, sem disciplina de acesso, onde o primeiro elemento a 
entrar é o último a sair. 
 
LIFO refere-se à estrutura de dados do tipo pilha, que nada mais édo que 
uma lista linear, duplamente encadeada. 
 
Um grafo com um único vértice e sem arestas é conhecido como dígrafo. 
 
 Gabarito Comentado 
 
 
 
 
 
 
7. 
 
 
 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. 
 
Y, antes do Z, e X, logo após o Z. 
 
X, antes do Z, e Y, 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. 
 
 Gabarito Comentado 
 
 
8. 
 
 
Com relação à lista duplamente encadeada, é correto afirmar que : 
 
 
 
 A lista precisa ter sempre um ponteiro apontando para o 
1º. nó 
 
Não pode haver remoções no meio da lista. 
 
Não pode ser vazia. 
 
A lista pode ser percorrida com igual facilidade para a 
direita ou para a esquerda, pois existem dois ponteiros. 
 
Consome menos memória do que uma lista 
simplesmente encadeada, se tivermos uma mesma 
aplicação. 
 
 Gabarito Comentado

Outros materiais