Buscar

Estrutura de dados Exercícios

Prévia do material em texto

CCT0260_A6_201510492054_V1 
 
Aluno: ALLISON LEONE FRANCELINO RAMOS DA SILVA Matrícula: 201510492054 
Disciplina: CCT0260 - ESTRUT.DE DADOS Período Acad.: 2017.1 EAD (G) / EX 
 
 
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. 
 
 
O almoxarifado de um órgão pediu ao técnico de informática que elaborasse um sistema 
de custeio que, para cada saída de material, considerasse o custo do mais recente que 
houvera dado entrada no almoxarifado. O técnico deve desenvolver um programa para 
tratar com uma estrutura de dados do tipo? 
 
 
 
 
TABLE 
 
 
FIFO 
 
 
ARRAY 
 
 
LIFO 
 
 
RECORD 
 
 Gabarito Comentado 
 
 
 
2. 
 
 
No contexto de estrutura de dados, uma pilha é: 
 
 
 
 
uma lista do tipo LILO. 
 
 
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. 
 
 
uma lista do tipo FIFO. 
 
 
um tipo de lista linear em que as operações de inserção e remoção são realizadas na 
extremidade denominada topo. 
 
 
um tipo de lista linear em que as operações de inserção e remoção são realizadas 
aleatoriamente. 
 
 Gabarito Comentado 
 
 
 
3. 
 
 
A técnica LIFO (last in first out), utilizada em programação estruturada, é fundamentada 
no conceito de: 
 
 
 
 
ponteiro 
 
 
array 
 
 
loop 
 
 
pilha 
 
 
fila 
 
 Gabarito Comentado 
 
 
 
4. 
 
 
Considere dados sendo manipulados em uma pilha sequencial em que as operações 
possíveis são: inserção - push(novo valor) ou remoção - pop(). 
 
Se realizarmos a seguinte sequencia de operações: 
 
push(A),push(B),push(C),pop(),pop(),push(D),pop(),pop(). 
 
Pode-se dizer que o interior da pilha apresenta-se: 
 
 
 
 
Apenas com o dado A 
 
 
Vazio 
 
 
Apenas com o dado D 
 
 
Com os dados A e D 
 
 
Com os dados A e B 
 
 
 
 
5. 
 
 
Na pequena mercearia do Sr. Manuel os pedidos são anotados no papel e assim que 
montam um lote com 10 listas de compras dos fregueses, as entregas começam. As 
compras de cada freguês são postas em uma caixa. As caixas são organizadas no veículo 
de entrega respeitando a ordem da entrega, ou seja, a 1a. caixa a ser entregue fica na 
frente das demais caixas e assim, sucessivamente. Dessa forma, a última caixa a ser 
entregue ficará no final do veículo, após todas as outras caixas que deverão ser 
entregues primeiro. Qual a estrutura de dados mais adequada que traduz a organização 
das pizzas no veículo de entrega ? 
 
 
 
 
lista 
 
 
fila 
 
 
pilha 
 
 
grafo 
 
 
árvore 
 
 Gabarito Comentado 
 
 
 
6. 
 
 
Pilhas são estruturas de dados que se utilizam do algoritmo 
LIFO, last in first out, ou melhor, o último a entrar é o primeiro 
a sair. Desta forma pode-se abstrair que existe apenas um 
local para a saída e a entrada de dados, ou seja o topo da 
pilha. 
Supondo que uma pilha seja implementada por um vetor de 
inteiros de tamanho 10 e que exista uma variável global 
chamada topo para indexar esta posição de entrada e saída 
de dados e ainda quando esta variável assume o valor -1 indica 
que a pilha está vazia. Marque a opção que melhor ilustra a 
função de exclusão de um dado do vetor pilha, supondo ainda 
que o vetor tenha sido declarado inicialmente de forma global. 
 
 
 
 void pop(){ if(topo != -1) topo--;} 
 
 void pop(){ if(pilha != -1) pilha[topo];} 
 
 void pop(){ if(topo != -1) pilha[topo-1];} 
 
 void pop(){ if(pilha != -1) pilha[topo-1];} 
 
 void pop(){ if(topo != -1) topo++;} 
 
 Gabarito Comentado 
 
 
 
7. 
 
 
A estrutura de dados Pilha funciona de acordo com o seguinte fundamento básico: 
 
 
 
 
O primeiro a entrar é o primeiro a sair. 
 
 
Quem estra no topo da pilha não sai mais. 
 
 
O primeiro a entrar é o último a sair. 
 
 
O último a entrar é o último a sair. 
 
 
Tanto o primeiro como o último podem sair primeiro. 
 
 Gabarito Comentado 
 
 
 
8. 
 
 
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 a 
ordem reversa dos de armazenamento de dados e alocação destes de forma contínua na 
memória. 
 
 
 
 
Fila Sequencial 
 
 
Lista Encadeada 
 
 
Pilha Encadeada 
 
 
Pilha Sequencial 
 
 
Lista Sequencial 
 
CCT0260_A7_201510492054_V1 
 
Aluno: ALLISON LEONE FRANCELINO RAMOS DA SILVA Matrícula: 201510492054 
Disciplina: CCT0260 - ESTRUT.DE DADOS Período Acad.: 2017.1 EAD (G) / EX 
 
 
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. 
 
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 Linear 
 
 
Pilha 
 
 
Lista simplesmente encadeada 
 
 Gabarito Comentado 
 
 
 
2. 
 
 
O que acontece quando se deseja inserir um elemento em uma FILA que já está cheia? 
 
 
 
 
Enqueue. 
 
 
A inserção é feita sem problema. 
 
 
Overflow. 
 
 
Dequeue. 
 
 
Underflow. 
 
 Gabarito Comentado 
 
 
 
3. 
 
 
Qual das alternativas a seguir pode definir uma estrutura de fila? 
 
 
 
 
Entrada de dados pelo início e saída pelo final. 
 
 
Entrada de dados pelo final e saída pelo início. 
 
 
Entrada e saída de dados pelo início. 
 
 
Entrada e saída de dados pelo final. 
 
 
Entrada e saída de dados em qualquer local. 
 
 Gabarito Comentado 
 
 
 
4. 
 
 
 Considere uma fila simples F de inteiros, do tipo Fila definido abaixo. Tal fila deverá armazenar 
códigos de agentes de uma firma de espionagem, desde que haja espaço para um novo 
agente. Assinale a opção que corretamente desenfileira o código de um agente, sabendo que a fila 
F foi inicializada de acordo com o trecho de código abaixo. 
struct Fila { in t v[100], inicio, fim; } ; 
Fila F; 
F. inicio = 0; 
F.fim = -1; 
 
 
 
 
 
 
 
void desenfileirar(Fila F) { 
 cout << "Removido o agente " << F.v[F.inicio]; 
 F.inicio--; 
 } 
 
 
 
 
void desenfileirar(Fila &F) {if (F.fim == -1 && F.inicio == 0) 
 cout << "Não há agentes para retirar. " << endl; 
 else { 
 cout << "Removido o agente " << F.v[F.inicio]; 
 F.inicio++; 
 } 
} 
 
 
 
 
void desenfileirar(Fila &F) { 
 if (F.inicio > F.fim) 
 cout << "Não há agentes para retirar. " << endl; 
 else { 
 cout << "Removido o agente " << F.v[F.inicio]; 
 } 
} 
 
 
 
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++; 
 } 
} 
 
 Gabarito Comentado 
 
 
 
5. 
 
 
Marque a afirmativa que represente uma Lista Circular Simplesmente Encadeada: 
 
 
 
 
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. 
 
 
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 "primeiro" nó não é NULL, mas sim aponta de volta para o "último" nó 
da lista, formando um ciclo. 
 
 Gabarito Comentado 
 
 
 
6. 
 
 
 Assinale a opção que, corretamente, mostra exemplos em que a estrutura de dados fila é 
usada, de acordo com o critério de inserções e remoções que rege tal estrutura. 
 
 
 
 
Fila de arquivos para impressão e buffer para gravação de dados em fila. 
 
 
Buffer para gravação de dados em mídia e fila de pessoas para comprar o ticket do 
metrô. 
 
 
Fila de documentos para xerox e fila de arquivos para impressão. 
 
 
Fila de pessoas para tirar o visto e fila de pessoas para usar o caixa eletrônico. 
 
 
Fila de arquivos para impressão e fila de pessoas no caixa de um supermercado. 
 
 Gabarito Comentado 
 
 
 
7. 
 
 
Seja Q uma estrutura de dados do tipo fila, em que ENQUEUE(X) significa a adição do 
elemento X à Q e que DEQUEUE(), a retirada de um elemento. Q está inicialmente vazia 
e sofre a seguinte sequencia de operações: 
ENQUEUE(1) 
ENQUEUE(2) 
DEQUEUE() 
ENQUEUE(3) 
ENQUEUE(4) 
DEQUEUE() 
DEQUEUE() 
ENQUEUE(5) 
Ao final da sequencia, a soma dos elementos de que (Q) será? 
 
 
 
 
9 
 
 
5 
 
 
6 
 
 
15 
 
 
0 
 
 Gabarito Comentado 
 
 
 
8. 
 
Pode-se citar os seguintes exemplos de aplicação da estrutura fila: Fila de arquivos para 
impressão: 
• Atendimento de processos requisitados a um sistema operacional. 
• Buffer para gravação de dados em mídia. 
• O tratamento do armazenamento das teclas que estão sendo digitadas antes da 
tecla enter ser pressionada. 
Agora analise as seguintes afirmativas: 
 I- Uma fila guarda a ordem direta em que os elementos foram armazenados. 
 II- Uma fila guarda a ordem reversa em que os elementos foram armazenados. 
 III- O algoritmo que é implementado em uma fila é baseao no princípio: " O último a 
entrar é o primeiro a sair". 
 
 
IV- O algoritmo que é implementado em uma fila é baseao no princípio: " O primeiro a 
entrar é o primeiro a sair". 
 Marque a alternativa correta: 
 
 
Apenas a IV está correta 
 
 
I e III estão corretas 
 
 
II e Iv estão corretas 
 
 
II e III estão corretas 
 
 
I e IV estão corretas 
 
CCT0260_A8_201510492054_V1 
 
Aluno: ALLISON LEONE FRANCELINO RAMOS DA SILVA Matrícula: 201510492054 
Disciplina: CCT0260 - ESTRUT.DE DADOS Período Acad.: 2017.1 EAD (G) / EX 
 
 
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. 
 
 
Em algumas situações, principalmente na utilização de listas, há a necessidade de 
posicionar o ponteiro em determinado local da lista. Dessa forma, analisando o trecho de 
código abaixo, que mostra uma função, assinale a alternativa correta que descreve o 
objetivo desta. Sabe-se que o sinal de asterisco (*) sinaliza um ponteiro. 
void funcao (Nodo **P){ 
 if ( *P != NULL ){ 
 while ( (*P) -> Anterior != NULL ) 
 *P= (*P) -> Anterior; 
 } 
} 
 
 
 
 
Posicionar o ponteiro onde houver o valor NULL 
 
 
Posicionar o ponteiro no início da lista 
 
 
Posicionar o ponteiro no final da lista 
 
 
Colocar o valor NULL em todos os ponteiros 
 
 
Posicionar o ponteiro no meio da lista 
 
 Gabarito Comentado 
 
 
 
2. 
 
 
Para simular uma lista encadeada simplesmente pode se utilizar as estruturas de 
ponteiros. Como pode ser definida uma estrutura do tipo ponteiro? 
 
 
 
 
Uma estrutura utilizada apontar erros de operações. 
 
 
Um objeto que armazena dado diretamente na memória. 
 
 
Um objeto que não contém endereço de memória. 
 
 
Um objeto que contém um endereço de memória. 
 
 
Uma estrutura que aponta para um objeto de arquivo. 
 
 Gabarito Comentado 
 
 
 
3. 
 
 
 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 ; 
 novo->c = cl; 
 novo->link = p; 
 return novo; 
} 
 
 
Lista * insereCliente(Lista *p, Cliente cl) 
{ 
 Lista *novo = new Lista; 
 novo->c = cl; 
 novo->link = p; 
 return novo; 
} 
 
 
 Lista * insereCliente(Lista *p, Cliente cl) 
{ 
 Lista *novo = new Lista; 
 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) { 
 Lista *novo = new Lista; 
 Cliente cl; 
 novo->c = cl; 
 novo->link = p; 
 return novo; 
} 
 
 Gabarito Comentado 
 
 
 
4. 
 
 
Em uma rotina em que se pretenda inserir o primeiro dado em uma estrutura dinâmica, é 
correto afirmar que: 
 
 
 
 
Existe uma instrução de repetição para percorrer a lista. 
 
 
Deve existir uma estrutura de repetição somente de a lista for duplamente 
encadeada. 
 
 
Deve existir uma estrutura de repetição somente se a estrutura for circular. 
 
 
Só deve existir estrutura de repetição se ocorrer a inclusão de mais de um dado 
simultaneamente 
 
 
Não deve existir uma estrutura de repetição.Gabarito Comentado 
 
 
 
5. 
 
 
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 decremento da variável final 
 
 
Antes da inserção deve-se fazer o incremento da variável final 
 
 
Após a inserção deve-se fazer o incremento da variável inicio 
 
 
Após a inserção deve-se fazer o incremento da variável final 
 
 
Antes da inserção deve-se fazer o decremento da variável final 
 
 Gabarito Comentado 
 
 
 
6. 
 
 
Em uma aplicação que usa processos de alocação estática e dinâmica de memória é 
correto afirmar que 
 
 
 
 
A memória utilizada pela aplicação é inicialmente estática, mas pode mudar 
 
 
Toda a memória utilizada pela aplicação não muda durante toda a sua execução 
 
 
A memória utilizada pela aplicação é totalmente alocada após o inicio de sua 
execução 
 
 
Todas as afirmações acima são incorretas 
 
 
Apenas a memória associada às variáveis do tipo vetor é alocada após o inicio da 
execução da aplicação 
 
 Gabarito Comentado 
 
 
 
7. 
 
 
Qual das inicializações de ponteiros apresentadas abaixo está correta? 
 
 
 
 
int *p = create int; 
 
 
int *p = new *int; 
 
 
int *p = new int; 
 
 
int *p = new int[]; 
 
 
int *p = new int*; 
 
 
 
 
8. 
 
 
Na área de estrutura de dados, em determinados casos, é necessário utilizar um tipo de 
dado onde seu valor serve como referência direta a outro valor alocado em outro espaço 
de memória. Este tipo de dado se chama: 
 
 
 
 
Variável 
 
 
Vetor 
 
 
Ponteiro 
 
 
Endereço 
 
 
Matriz 
 
Exercício: CCT0260_EX_A9_201510492054_V1 Matrícula: 201510492054 
Aluno(a): ALLISON LEONE FRANCELINO RAMOS DA SILVA Data: 05/06/2017 16:36:30 (Finalizada) 
 
 
 1a Questão (Ref.: 201510774324) Fórum de Dúvidas (0) Saiba (0) 
 
Assinale a opção correta. Sobre pilha dinâmica podemos afirmar que : 
 
 usa o critério FIFO, visto que é dinâmica. 
 usa o critério LIFO e é implementada usando-se listas encadeadas. 
 é recomendada para qualquer tipo de aplicação em que insere-se no final e retira-se do 
início. 
 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 
 
 
 
 2a Questão (Ref.: 201511275169) Fórum de Dúvidas (0) Saiba (0) 
 
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 
 BuscaNaLista 
 InsereNoFim 
 InsereNoFrente 
 
 Gabarito Comentado 
 
 
 
 3a Questão (Ref.: 201511191767) Fórum de Dúvidas (0) Saiba (0) 
 
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: 
 
 
Todas as afirmações são verdadeiras 
 Apenas a afirmação (3) é verdadeira 
 Apenas as afirmações (1) e (3) são verdadeiras 
 
Apenas a afirmação (1) é verdadeira 
 
Todas as afirmações são falsas 
 
 
 
 
 4a Questão (Ref.: 201511240978) Fórum de Dúvidas (0) Saiba (0) 
 
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 
 
 
 
 5a Questão (Ref.: 201511112492) Fórum de Dúvidas (0) Saiba (0) 
 
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 
 III e V estão corretas 
 IV e V estão corretas. 
 I e II estão corretas. 
 III está correta 
 
 Gabarito Comentado 
 
 
 
 6a Questão (Ref.: 201511146980) Fórum de Dúvidas (0) Saiba (0) 
 
Assinale a característica que NÃO está relacionada às estruturas de dados encadeadas: 
 
 
A memória ocupada por seus elementos é, em geral, liberada com o uso de delete. 
 Consomem memória de maneira permanente, só sendo liberadas ao fim do programa. 
 A memória para armazenar seus elementos é, em geral, alocada com o uso de new. 
 
Cada elemento guarda pelo menos um ponteiro para outro elemento da estrutura. 
 
Em geral, marca-se o último elemento com um ponteiro de valor NULL. 
 
 
 
 
 7a Questão (Ref.: 201511240856) Fórum de Dúvidas (0) Saiba (0) 
 
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; 
 
p *no -> new no; 
 no *p=new no; 
 
no *p -> new no; 
 
Exercício: CCT0260_EX_A10_201510492054_V1 Matrícula: 201510492054 
Aluno(a): ALLISON LEONE FRANCELINO RAMOS DA SILVA Data: 05/06/2017 16:39:20 (Finalizada) 
 
 
 1a Questão (Ref.: 201510771668) Fórum de Dúvidas (0) Saiba (0) 
 
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 esquerdapara direita. 
 As operações removem o nodo apontado pelo ponteiro p. 
 
As operações possibilitam o percurso do ponteiro p da direita para esquerda. 
 
As operações inserem novo nodo, após o nodo apontado pelo ponteiro p. 
 
As operações possibilitam a busca de um nodo apontado pelo ponteiro p. 
 
 
 
 
 2a Questão (Ref.: 201510781928) Fórum de Dúvidas (0) Saiba (0) 
 
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); 
 listaDE *busca (listaDE *LISTA, int valor); 
 void exibeIpF(listaDE *LISTA); 
 listaDE *insereFim(listaDE *LISTA, int valor); 
 listaDE *remove(listaDE *LISTA, int valor); 
 
 Gabarito Comentado 
 
 
 
 3a Questão (Ref.: 201510569378) Fórum de Dúvidas (0) Saiba (0) 
 
As listas encadeadas podem ser elaboradas de duas formas utilizando uma técnica de encadeamento 
simplesmente ou encadeamento duplo. O que difere uma lista simplesmente encadeada de uma lista 
duplamente encadeada? 
 
 
Em uma lista simplesmente encadeada cada nó aponta para nó seguinte e para o nó anterior. 
 Em uma lista duplamente encadeada, cada nó aponta para um nó enquanto a lista simplesmente 
encadeada aponta para mais de um nó. 
 
Em uma lista duplamente encadeada cada nó aponta para nó seguinte. 
 
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ó. 
 
 Gabarito Comentado 
 
 
 
 4a Questão (Ref.: 201510569050) Fórum de Dúvidas (0) Saiba (0) 
 
Em uma lista linear duplamente encadeada. 
 
 
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. 
 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. 
 
Cada nó possui um só ponteiro que referencia o próximo nó da lista. 
 
 Gabarito Comentado 
 
 
 
 5a Questão (Ref.: 201510569261) Fórum de Dúvidas (0) Saiba (0) 
 
 Suponha uma listagem mantida com informações sobre um equipamento a ser adquirido por 
uma empresa. A listagem possui as informações sobre de 10 fornecedores, descritas a seguir: 
próximo: um ponteiro para o próximo fornecedor da listagem; 
nome: nome, identificando o fornecedor; 
valor: preço do equipamento no fornecedor; 
anterior: um ponteiro para o fornecedor anterior da listagem. 
Sendo o fornecedor "Z" o quinto elemento desta listagem e "X" e "Y" dois outros fornecedores 
que não pertencem à listagem, com seus respectivos ponteiros "pZ", "pX" e "pY", considere o 
trecho de código abaixo. 
pY->proximo = pX; 
pX->anterior = pY; 
pX->proximo = pZ->proximo; 
pZ->proximo->anterior = pX; 
pZ->proximo = pY; 
pY->anterior = pZ; 
Este trecho de código é usado para inserir na listagem os fornecedores: 
 
 
X, antes do Z, e Y, logo após o Z. 
 
Y, antes do Z, e X, antes do Y. 
 X, logo após o Z, e Y, logo após o X. 
 
Y, antes do Z, e X, logo após o Z. 
 Y, logo após o Z, e X, logo após o Y. 
 
 Gabarito Comentado 
 
 
 
 6a Questão (Ref.: 201510774346) Fórum de Dúvidas (0) Saiba (0) 
 
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. 
 Consome menos memória do que uma lista simplesmente encadeada, se 
tivermos uma mesma aplicação. 
 Não pode haver remoções no meio da lista. 
 Não pode ser vazia. 
 A lista precisa ter sempre um ponteiro apontando para o 1º. nó 
 
 Gabarito Comentado 
 
 
 
 7a Questão (Ref.: 201511182950) Fórum de Dúvidas (0) Saiba (0) 
 
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 inserem novo nodo, após o nodo apontado pelo ponteiro p. 
 As operações possibilitam o percurso do ponteiro p da direita para esquerda. 
 
As operações possibilitam a busca de um 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. 
 
 Gabarito Comentado 
 
 
 
 8a Questão (Ref.: 201511233323) Fórum de Dúvidas (0) Saiba (0) 
 
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 duplamente encadeada 
 
Matriz 
 
Lista encadeada 
 
Pilha

Continue navegando