Buscar

Ex-01-10-Estrutura_De_Dados

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

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______.
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:
ESTRUTURA DE DADOS 
Lupa Calc.
 
 
CCT0826_A10_201908648521_V1 
 
Aluno: COSMO ANDRADE FÉLIX Matr.: 201908648521
Disc.: ESTRUTURA DE DADOS 2020.3 EAD (GT) / EX
 
Prezado (a) Aluno(a),
 
Você fará agora seu TESTE DE CONHECIMENTO! 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.
Após responde cada questão, você terá acesso ao gabarito comentado e/ou à explicação da mesma. Aproveite para se
familiarizar com este modelo de questões que será usado na sua AV e AVS.
 
1.
Declaração de vetor
Alocação estática de memória
Declaração de matriz
Declaração de função
Alocação dinâmica de memória
 
 
 
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.
 
 
 
 
2.
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.
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.
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.
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.
 
javascript:voltar();
javascript:voltar();
javascript:diminui();
javascript:aumenta();
javascript:calculadora_on();
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;
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:
 
 
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)
 
 
 
 
3.
Matriz
Lista duplamente encadeada
Lista encadeada
Fila
Pilha
 
 
 
 
4.
Com relação à lista duplamente encadeada, é correto afirmar que :
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 :
Ao criarmos uma rotina para inserir um dado em uma LISTA de dados duplamente encadeada e circular, nos deparamos
com as seguintes cuidados:
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 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.
 
Gabarito
 Comentado
 
 
 
5.
 A lista precisa ter sempre um ponteiro apontando para o 1º. nó
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.
A lista pode ser percorrida com igual facilidade para a direita ou para a
esquerda, pois existem dois ponteiros.
Não pode ser vazia.
 
Gabarito
 Comentado
 
 
 
6.
Árvore
Listas simplesmente encadeadas
Grafo
Listas Duplamente Encadeadas
Listas Circulares
 
 
 
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.
 
 
 
 
7.
Só poderei inserir no final da lista e nunca no começo ou no meio.
Posso inserir no começo, no meio ou no fim.
Só poderei inserir no final da lista e no começo somente se ela estiver cheia.
Só poderei inserir no final da lista e no começo somente se ela estiver vazia.
Só poderei inserir no começo ou no fim, mas não no meio.
 
 
 
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:
Explicação:
Em uma lista duplamente encadeada circular ou não, podemos inserir ou remover de qualquer parte da lista. Não há problemana inserção se a lista estiver vazia. 
 
 
 
 
8.
As operações removem o nodo apontado pelo ponteiro p.
As operações possibilitam a busca de um nodo apontado pelo ponteiro p.
As operações 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 o percurso do ponteiro p da esquerda para direita.
 
 
 
 
 
 
 
 Não Respondida Não Gravada Gravada
 
 
Exercício inciado em 14/09/2020 13:13:51. 
 
 
 
javascript:abre_colabore('36482','204828651','4084829195');
 
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.
ESTRUTURA DE DADOS 
Lupa Calc.
 
 
CCT0826_A9_201908648521_V1 
 
Aluno: COSMO ANDRADE FÉLIX Matr.: 201908648521
Disc.: ESTRUTURA DE DADOS 2020.3 EAD (GT) / EX
 
Prezado (a) Aluno(a),
 
Você fará agora seu TESTE DE CONHECIMENTO! 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.
Após responde cada questão, você terá acesso ao gabarito comentado e/ou à explicação da mesma. Aproveite para se
familiarizar com este modelo de questões que será usado na sua AV e AVS.
 
1.
while(pt->próximo)pt=pt->próximo;
while(pt->próximo->proximo)pt=pt->próximo;
while(próximo)pt=próximo;
while(pt != null)pt=pt->próximo;
while(pt->próximo != null)pt=pt->próximo->proximo;
 
 
 
Explicação:
O código será:
while(pt->próximo)pt=pt->próximo;
 
 
 
javascript:voltar();
javascript:voltar();
javascript:diminui();
javascript:aumenta();
javascript:calculadora_on();
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:
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; 
 }
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 ) 
 
2.
20 5 8
5 8 20
10 3 5 8 20
5 8
10 3 20
 
 
 
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
 
 
 
 
3.
ListaNo
InsereNoFrente
RemoveNo
InsereNoFim
BuscaNaLista
 
Gabarito
 Comentado
 
 
 
4.
III if(ptr) 
IV while (ptr !=NULL) 
 V while (ptr)
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; 
}; 
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,
III e V estão corretas
I e II estão corretas.
IV e V estão corretas.
III está correta
I e IV estão corretas
 
Gabarito
 Comentado
 
 
 
5.
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 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ó.
 
Gabarito
 Comentado
 
 
 
6.
11 e 80.
4 e 80.
7 e 40.
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.
Sobre as estruturas de dados existentes podemos afirmar que:
7 e 29.
11 e 29.
 
 
 
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
 
 
 
 
7.
no *p=new no;
no *p -> new no;
p *no -> new no;
no p -> new no;
p *no=new no;
 
Gabarito
 Comentado
 
 
 
8.
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.
 
 
 
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.
 
 
 
 
 
 
 
 
 
 Não Respondida Não Gravada Gravada
 
 
Exercício inciado em 14/09/2020 13:11:03. 
 
 
 
javascript:abre_colabore('36482','204828298','4084820514');
 
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 . 
 
Assinale a alternativa correta sobre alocação de memória.
ESTRUTURA DE DADOS 
Lupa Calc.
 
 
CCT0826_A8_201908648521_V1 
 
Aluno: COSMO ANDRADE FÉLIX Matr.: 201908648521
Disc.: ESTRUTURA DE DADOS 2020.3 EAD (GT) / EX
 
Prezado (a) Aluno(a),
 
Você fará agora seu TESTE DE CONHECIMENTO! 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.
Após responde cada questão, você terá acesso ao gabarito comentado e/ou à explicação da mesma. Aproveite para se
familiarizar com este modelo de questões que será usado na sua AV e AVS.
 
1.
30 21 21 10 20
30 20 20 10 20
30 30 21 30 21
30 20 0 30 21
30 30 21 10 20
 
 
 
 
2.
javascript:voltar();
javascript:voltar();
javascript:diminui();
javascript:aumenta();
javascript:calculadora_on();
Marque a afirmativa que represente uma concatenação em listas.
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.
 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 �po Cliente e a lista é do �po List assim definidos :
 
struct Cliente {
 long int matricula;
 string nome, endereco e tel;
};
struct List {
 Cliente p;
 struct List *link;
 };
A declaração de um vetor é um exemplo clássico de alocação dinâmica de memória.
Na alocação dinâmica de memória, a memória é alocada sob demanda, apenas quando necessário.
É correto afirmar que a alocação dinâmica de memória sempre leva a programas mais rápidos.
Alocação estática de memória refere-se ao processo de alocar memória com o uso de ponteiros.
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.
 
 
 
 
3.
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.
Consiste em dividir a lista em duas outras listas. A quantidade de nós que cada lista terá, depende da necessidade.
Intercalar a ordem dos dados da lista do final para o início, atualizando a lista.
Organizar os dados da lista em ordem crescente ou decrescente.
 
Gabarito
 Comentado
 
 
 
4.
lista sequencial e alocação dinâmica de memória
fila encadeada e alocação dinâmica de memória
fila dinâmica e alocação dinâmica de memória
pilha dinâmica e alocação dinâmica de memória
lista encadeada e alocação dinâmica de memória
 
Gabarito
 Comentado
 
 
 
5.
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 = 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;
}
 
 
 
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
 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 �po Cliente e a lista é
do �po Lista assim definidos :
struct Cliente {
 long int matricula;
 string nome, endereco, tel;
};
struct Lista {
 Cliente c;
 struct Lista *link;
 };
 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.
 
 
 
 
6.
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 ;
 novo->c = cl;
 novo->link = p;
 return novo;
}
Lista * insereCliente(Lista *p, Cliente cl)
{
 Lista *novo = new Lista;
E C++, quando um ponteiro é declarado para uma struct, o acesso aos campos deste registro (struct) se dá pelo operador :
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:
 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 = new Lista;
 novo.c = cl;
 novo.link = p;
 return novo;
}
 
Gabarito
 Comentado
 
 
 
7.
∙ (ponto).
& (e comercial ou eitza).
* (asterisco).
, (vírgula).
-> (seta).
 
 
 
Explicação:
Por definição, o operador é o seta, pois se tem, no caso, ponteiro para struct. 
 
 
 
 
8.
As estruturas dinâmicas são assim chamadas, pois não podem fazer alocação de memória em tempo de execução,
mas mesmo assim conseguem ter seus tamanhos alterados de acordo com a demanda.
As estruturas dinâmicas são assim chamadas, pois podem fazer alocação de memória em tanto em tempo de
execução quanto em tempo de compilação, mas não podem ter seus tamanhos alterados de acordo com a demanda.
As estruturas dinâmicas são assim chamadas, pois podem fazer alocação de memória em tempo de compilação e
entretanto seus tamanhos só são alterados na codificação de acordo com a demanda.
As estruturas dinâmicas são assim chamadas, pois podem fazer alocação de memória em tempo de execução e terem
seus tamanhos alterados de acordo com a demanda.
As estruturas dinâmicas são assim chamadas, pois podem fazer alocação de memória em tempo de compilação e
terem seus tamanhos alterados de acordo com a demanda.
 
 
 
 
 
 
 
 Não Respondida Não Gravada Gravada
 
 
Exercício inciado em 14/09/2020 13:05:22.javascript:abre_colabore('36482','204827456','4084798580');
 
Sobre pilhas, lista e filas, considere as afirmativas a seguir. I. As estruturas de dados pilhas, filas e listas armazenam
coleções de itens. A característica que as distinguem é a ordem em que podem ser retirados os itens dessas coleções e a
ordem em que foram inseridos. II. Considere que os itens A, B, C, D, E foram inseridos nessa ordem em uma fila.
Necessariamente, o primeiro elemento a ser removido dessa fila é o elemento A. III. Considere que os itens A, B, C, D, E
foram inseridos nessa ordem em uma pilha. Necessariamente, o último elemento a ser removido dessa pilha é o elemento
E. IV. Considere que os itens A, B, C, D, E foram inseridos nessa ordem em uma lista. Necessariamente, o primeiro
elemento a ser removido dessa lista é o elemento A.
ESTRUTURA DE DADOS 
Lupa Calc.
 
 
CCT0826_A7_201908648521_V1 
 
Aluno: COSMO ANDRADE FÉLIX Matr.: 201908648521
Disc.: ESTRUTURA DE DADOS 2020.3 EAD (GT) / EX
 
Prezado (a) Aluno(a),
 
Você fará agora seu TESTE DE CONHECIMENTO! 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.
Após responde cada questão, você terá acesso ao gabarito comentado e/ou à explicação da mesma. Aproveite para se
familiarizar com este modelo de questões que será usado na sua AV e AVS.
 
1.
Somente as afirmativas I, II e III 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 II são corretas.
Todas as afirmativas estão corretas
 
 
 
Explicação:
Analisando cad afirmativa:
 I. As estruturas de dados pilhas, filas e listas armazenam coleções de itens. A característica que as distinguem é a ordem em
que podem ser retirados os itens dessas coleções e a ordem em que foram inseridos.
>>>>>Verdadeira. A pilha segue a lógica LIFO, fila segue a lógica FIFO e em uma lista insere-se e retira-se de qualquer
posição.
II. Considere que os itens A, B, C, D, E foram inseridos nessa ordem em uma fila. Necessariamente, o primeiro elemento a ser
removido dessa fila é o elemento A.
>>>>> Verdadeira. O 1o. a entrar, será o 1o. a sair.
III. Considere que os itens A, B, C, D, E foram inseridos nessa ordem em uma pilha. Necessariamente, o último elemento a
ser removido dessa pilha é o elemento E.
>>>>> FAlso. O último a entrar foi o E, portanto, pela lógica LIFO é o primeiro a sair.
IV. Considere que os itens A, B, C, D, E foram inseridos nessa ordem em uma lista. Necessariamente, o primeiro elemento a
ser removido dessa lista é o elemento A.
>>>> Falso. Em uma lista insere-se em qualquer posição e retira-se de qualquer posição.
Logo, as afirmativa I e II estão corretas.
 
javascript:voltar();
javascript:voltar();
javascript:diminui();
javascript:aumenta();
javascript:calculadora_on();
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()
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:
 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?
 
 
 
2.
4 5 6
4 5
5 7
7 5
4 6 7
 
 
 
 
3.
Struct
Bolha
Fila
Pilha
Matriz
 
Gabarito
 Comentado
 
 
 
4.
inicio 2 e fim 0
Início 0 e fim 0
Nenhuma das opções
Início 4 e fim 4
Início 1 e fim 4
 
 
 
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
 
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.
 
 
 
5.
Fila
Lista simplesmente encadeada
Fila Circular
Pilha
Lista Linear
 
Gabarito
 Comentado
 
 
 
A estrutura de dados conhecida pela lógica FIFO (First In First Out) é denominada :
Para organizar o acesso dos processos que demandam recursos do computador (uso da CPU, acesso ao disco rígido e a
outros dispositivos de Entrada e Saída), o Sistema Operacional gerencia essas demandas colocando os processos
requisitantes em:
 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:
6.
Árvore
Lista circular
Pilha
Fila
Vetor
 
 
 
Explicação:
Fila é, por definição, uma lista linear ordenada em que as inserções e remoções seguem a lógica FIFO.
 
 
 
 
7.
Listas
Pilhas
Structs
Filas
Árvores
 
 
 
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.
 
 
 
 
8.
pilha sequencial
pilha circular
fila circular
lista sequencial
lista circular
 
Gabarito
 Comentado
 
 
 
 
 
 
 Não Respondida Não Gravada Gravada
 
 
Exercício inciado em 14/09/2020 13:02:01. 
 
javascript:abre_colabore('36482','204827083','4084790173');
 
 
 
Tei Ping, estudante de computação, precisou implementar parte de um jogo que trabalhava com cartas especiais. Cada
carta possui um número e uma letra. Alguns jogadores teriam que jogar as cartas na mesa, enquanto outros deveriam
devolver as cartas na sequência inversa à jogada. Tei Ping estudou o mecanismo do jogo e decidiu usar a melhor estrutura
de dados na sua implementação. Qual a estrutura escolhida ?
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?
ESTRUTURA DE DADOS 
Lupa Calc.
 
 
CCT0826_A6_201908648521_V1 
 
Aluno: COSMO ANDRADE FÉLIX Matr.: 201908648521
Disc.: ESTRUTURA DE DADOS 2020.3 EAD (GT) / EX
 
Prezado (a) Aluno(a),
 
Você fará agora seu TESTE DE CONHECIMENTO! 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.
Após responde cada questão, você terá acesso ao gabarito comentado e/ou à explicação da mesma. Aproveite para se
familiarizar com este modelo de questões que será usado na sua AV e AVS.
 
1.
árvore
fila
pilha
grafo
lista
 
Gabarito
 Comentado
 
 
 
2.
TABLE
LIFO
ARRAY
RECORD
FIFO
 
Gabarito
 Comentadojavascript:voltar();
javascript:voltar();
javascript:diminui();
javascript:aumenta();
javascript:calculadora_on();
A estrutura de dados linear que obedece o seguinte critério: o último elemento inserido será o primeiro elemento a ser
retirado (LIFO) é:
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?
3.
Árvore binária
Lista circular
Fila
Árvore AVL
Pilha
 
 
 
Explicação:
 
Por definição, a estrutura de dados pilha segue a lógica LIFO (Last In First
Out), em que o último a entrar será o primeiro a sair. Portanto, a opção
correta é pilha.
 
Fila : Lista linear em que segue-se a lógica FIFO (First In First Out) para
inserções e remoções.
 
Árvore binária : pode ser ordenada ou não. Se não for, insere-se em qualquer
posição e o mesmo para remoção.
 
Árvore AVL : Insere-se e retira-se de forma ordenada
 
Lista circular : Pode-se inserir ou remover de qualquer nó da lista.
 
 
 
 
 
 
4.
Nenhum, a pilha estará vazia.
7 e 2
Apenas o 10
10 e 2
Apenas o 2
 
 
 
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)
A estrutura de dados do tipo pilha (stack) é um tipo abstrato de dado baseada no princípio:
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.
7 10 PUSH(7) PUSH(10)
10 POP() PUSH(10)
2 10 PUSH(11)PUSH(10)
10 POP() PUSH(10)
 POP() VAZIA Resposta CORRETA
 
Gabarito
 Comentado
 
 
 
5.
De dividir para conquistar.
First In First Out (FIFO).
Da indiferença.
Last In First Out (LIFO).
Da localidade de referência.
 
 
 
Explicação:
A lógica da Pilha é: o último a entrar é o primeiro a sair logo, Last (último) In (dentro) First
(primeiro) Out (fora) -> LIFO.
 
Gabarito
 Comentado
 
 
 
6.
void pop(){ if(topo != -1) pilha[topo-1];}
void pop(){ if(pilha != -1) pilha[topo];}
void pop(){ if(pilha != -1) pilha[topo-1];}
void pop(){ if(topo != -1) topo--;}
void pop(){ if(topo != -1) topo++;}
 
Gabarito
 Comentado
 
 
Para uma aplicação em que deseja-se recuperar a ordem reversa de armazenamento dos dados em um vetor, a estrutura
de dados mais apropriada a ser utilizada na implementação da aplicação é:
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.
Grafo
Fila
Pilha
Lista
Árvore
 
 
 
Explicação:
Pilha é uma estrutura de dados linear que segue a lógica LIFO, em que o último a entrar será o primeiro a sair. Portanto,
trabalha com a ordem reversa.
Fila : segue a lógica FIFO. Trabalha na ordem direta.
Lista : insere-se e retira-se de qualquer posição.
Árvore e grafo : estrutura de dados não lineares.
 
 
 
 
8.
7 e 29
11 e 80
11 e 29
7 e 40
4 e 80
 
 
 
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.
 
 
 
 
 
 
 
 
 Não Respondida Não Gravada Gravada
 
 
Exercício inciado em 14/09/2020 12:56:08. 
 
 
 
javascript:abre_colabore('36482','204826665','4084780578');
 
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:
ESTRUTURA DE DADOS 
Lupa Calc.
 
 
CCT0826_A5_201908648521_V1 
 
Aluno: COSMO ANDRADE FÉLIX Matr.: 201908648521
Disc.: ESTRUTURA DE DADOS 2020.3 EAD (GT) / EX
 
Prezado (a) Aluno(a),
 
Você fará agora seu TESTE DE CONHECIMENTO! 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.
Após responde cada questão, você terá acesso ao gabarito comentado e/ou à explicação da mesma. Aproveite para se
familiarizar com este modelo de questões que será usado na sua AV e AVS.
 
1.
I, III, IV
I, II
I, II, III
I, II, III, IV
I, II, IV
 
 
 
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.
javascript:voltar();
javascript:voltar();
javascript:diminui();
javascript:aumenta();
javascript:calculadora_on();
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
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 . 
 
Falso. A inserção pode ser no início, no meio ou no final da lista. Na verdade, pode ocorrer inserção e remoçãoem 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
 
 
 
 
2.
0
6
4
3
-1
 
 
 
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.
 
 
 
 
3.
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:
Considere uma lista com n livros, em que cada livro é modelado pela struct :
 
struct Livro {
 string �tulo, 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 :
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[i].matricula << " " << L[i].titulo << endl;
for (int i = 0; i < n; i++) 
 cout << L[i] << endl; 
 for (int i = 0; i < n; i++) 
 cout << L.matricula[i] << " " << L.titulo[i] << endl;
 for (int i = 0; i < n; i++) 
 cout << L.matricula << " " << L.titulo << endl;
 
 
 
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;
 
 
 
 
4.
Nenhuma afirmação está correta.
Está correta apenas a afirmativa I.
Estão corretas apenas as afirmativas I e II.
Estão corretas apenas as afirmativas I e III.
Está correta apenas a afirmativa II.
 
 
 
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.
 
 
 
 
5.
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 é:
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.
Inserção
Inicialização
Ordenação por inserção
Subs�tuição
Busca
 
Gabarito
 Comentado
 
 
 
6.
Vetor
Matriz
Variável
Registro
Função
 
Gabarito
 Comentado
 
 
 
7.
Pilha Sequencial
Lista Encadeada
Lista Sequencial
Pilha Encadeada
Fila Sequencial
 
Gabarito
 Comentado
 
 
 
8.
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[i] << endl;
for (int i = 0; i < n; i++)
 cout << L.matricula << " " << L.nome << endl;
 
Gabarito
 Comentado
 
 
 
 
 
 
 Não Respondida Não Gravada Gravada
 
 
Exercício inciado em 14/09/2020 12:54:16. 
 
 
 
javascript:abre_colabore('36482','204826185','4084769541');
 
Marque a afirmativa correta para a "Ordenação em Listas Lineares Sequenciais".
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".
ESTRUTURA DE DADOS 
Lupa Calc.
 
 
CCT0826_A4_201908648521_V1 
 
Aluno: COSMO ANDRADE FÉLIX Matr.: 201908648521
Disc.: ESTRUTURA DE DADOS 2020.3 EAD (GT) / EX
 
Prezado (a) Aluno(a),
 
Você fará agora seu TESTE DE CONHECIMENTO! 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.
Após responde cada questão, você terá acesso ao gabarito comentado e/ou à explicação da mesma. Aproveite para se
familiarizar com este modelo de questões que será usado na sua AV e AVS.
 
1.
Consiste em adicionar um valor no vetor, alterando a ordem existente e ajustando o total de elementos.
Consiste em fazer uma busca em um vetor já ordenado, dividindo o espaço de busca ao meio e verificando se o dado
está no meio ou, antes do meio ou depois do meio.
Consiste em 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.
É o processo pelo qual um conjunto de dados é colocado em uma ordem crescente ou decrescente.
 
Gabarito
 Comentado
 
 
 
2.
Bolha
QuickSort
Inserção
MergeSort
Seleção
 
Gabarito
 Comentado
 
javascript:voltar();
javascript:voltar();
javascript:duvidas('27785','7118','1','3620705','1');
javascript:duvidas('31184','7118','2','3620705','2');
javascript:diminui();
javascript:aumenta();
javascript:calculadora_on();
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.
Considere a função misterio e o trecho abaixo.
voidmisterio(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 ?
 
 
 
3.
6 e 4
6 e 2
6 e 1
5 e 5
7 e 1
 
 
 
 
4.
10 30 20 40
5 10 20 30 
10 20 40 30 
10 30 40 20 
10 20 30 40 
 
 
 
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.
 
 
 
javascript:duvidas('641675','7118','3','3620705','3');
javascript:duvidas('983141','7118','4','3620705','4');
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;
}
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
 
5.
pesquisa cadeias indexada
pesquisa de cadeias
pesquisa binária
pesquisa sequencial
pesquisa indexada
 
Gabarito
 Comentado
 
 
 
6.
javascript:duvidas('30945','7118','5','3620705','5');
javascript:duvidas('27617','7118','6','3620705','6');
} // fim while
} // fim da função
Entre os diversos algoritmos de pesquisa existentes, certamente os mais famosos são os da pesquisa sequencial e
o da pesquisa binária. A busca ou pesquisa sequencial pode ser aplicada em vetores independente destes estarem
ordenados, entretanto a busca binária só se aplica em vetores ordenados.
Seja o vetor A= {10,35,41,55,69,70,98}, suponha que o número 70 foi pesquisado pelo algoritmo da busca
sequencial e também pelo algoritmo da busca binária, ambos algoritmos realizam testes nos elementos do vetor
até achar o que procuram ou definirem que o elemento não se encontra no vetor. Sendo assim marque a
alternativa que expressa o número de testes realizados pela busca sequencial e o número de testes realizados
pela busca binária, respectivamente, até encontrarem o 70.
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.
Heapsort
Shellsort
Mergesort
Quicksort
Bublesort
 
Gabarito
 Comentado
 
 
 
7.
6 e 1
6 e 2
7 e 1
5 e 5
6 e 4
 
Gabarito
 Comentado
 
 
 
8.
Somente as afirmativas I e III são corretas.
Somente as afirmativas III e IV são corretas.
Somente as afirmativas I e IV são corretas.
Somente as afirmativas I e II são corretas.
Somente as afirmativas II, III e IV são corretas.
 
 
 
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.
javascript:duvidas('230385','7118','7','3620705','7');
javascript:duvidas('1180366','7118','8','3620705','8');
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.
 
 
 
 
 
 
 
 Não Respondida Não Gravada Gravada
 
 
Exercício inciado em 14/09/2020 12:50:55. 
 
 
 
javascript:abre_colabore('36482','204825784','4084759974');
 
Qual das seguintes estruturas de dados é classificada como heterogênea?
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.
ESTRUTURA DE DADOS 
Lupa Calc.
 
 
CCT0826_A3_201908648521_V1 
 
Aluno: COSMO ANDRADE FÉLIX Matr.: 201908648521
Disc.: ESTRUTURA DE DADOS 2020.3 EAD (GT) / EX
 
Prezado (a) Aluno(a),
 
Você fará agora seu TESTE DE CONHECIMENTO! 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.
Após responde cada questão, você terá acesso ao gabarito comentado e/ou à explicação da mesma. Aproveite para se
familiarizar com este modelo de questões que será usado na sua AV e AVS.
 
1.
Vetor
Fila
Loop
Pilha
Registro
 
 
 
Explicação:
Registro permite agregar dados de tipos diferentes.
Vetor permite agregar dados do mesmo tipo.
Pilha e fila implementadas com vetor ou lista encadeada.
Loop : termo genérico para repetições.
 
Gabarito
 Comentado
 
 
 
2.
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;
javascript:voltar();
javascript:voltar();
javascript:diminui();
javascript:aumenta();
javascript:calculadora_on();
Marque a afirmativa correta para a "Inserção em lista linear sequencial ordenada".
 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; 
 }
int ordena(float v[], float valor, int n){
 for (int i = 0; i < n; i++)
 if (v[i] == valor)
 return i;
 return -1;
 }
void ordena (int v[], int n){ 
 int i, j, aux; 
 for (j = 1; j < n; j++) 
 for (i=j; i > 0 && v[i-1]> v[i]; i--){ 
 aux = v[i-1]; 
 v[i-1] = v[i]; 
 v[i] = aux; 
 } 
 }
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;} 
 } 
 } 
 }
 
 
 
Explicação:
Na ordenação por seleção, a idéia é sempre procurar o menor elemento do vetor e inseri-lo no início do vetor. Procuramos o
menor valor do vetor e colocamos ele em vetor.
Procuramos o menor valor do vetor excluindo o já colocado e colocamos ele em vetor. E assim vamos indo até termos todo o
vetor ordenado.
Partindo sempre a partir do último elemento reordenado (a partir do i), o programa procura o menor elemento no vetor e o
substitue pelo elemento i atual.
É o que está ocorrendo na primeira opção!
 
Gabarito
 Comentado
 
 
 
3.
Consiste em adicionar um valor no vetor, mantendo a ordem existente e ajustando o total de elementos.
Consiste em fazer uma busca em um vetor desordenado, dividindo o espaço de busca ao meio e verificando se o dado
está no meio ou, antes do meio ou depois do meio.
É o processo pelo qual um conjunto de dados é colocado em uma ordem crescente ou decrescente.
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.
 
 
 
Explicação:
Consiste em adicionar um valor no vetor, mantendo a ordem existente e ajustando o total de elementos. 
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.
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.
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.
Só pode ocorrer, no entanto, se a lista não estiver cheia.
 
 
 
 
4.
aluno.vet[10]=5.7;
vet[10]=aluno.5.7;
vet[10].aluno.nota=5.7 ;
vet[10].nota=5.7;
aluno.vet[10].nota=5.7;
 
 
 
 
5.
vet[3].aluno=6.0;
aluno[3].media=6.0;
vet[3].media=6.0;
aluno[10]=6.0;
aluno[3].10=6.0;
 
 
 
 
6.
vet[10].aluno.nota=5.7 ;
vet[10]=aluno.5.7;
aluno.vet[10]=5.7;
aluno.vet[10].nota=5.7;
vet[10].nota=5.7;
 
 
Marque a opção correta, considerando 
 
struct Livro { 
int codigo; 
float preco; 
} liv; 
 
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 :
 
 
7.
Livro.codigo = 12345;
Livro->liv.codigo = 12345;
liv.preco = 30.70;
liv->preco = 30.70;
Livro.liv.codigo = 12345;
 
 
 
 
8.
* (asterisco).
-> (seta).
, (vírgula).
∙ (ponto).
& (e comercial ou eitza).
 
 
 
Explicação:
Por definição, o operador que permite acessar os campos de uma variável struct é o ponto (.).
 
 
 
 
 
 
 
 
 Não Respondida Não Gravada Gravada
 
 
Exercício inciado em 14/09/2020 12:46:50. 
 
 
 
javascript:abre_colabore('36482','204825307','4084750086');
 
Ao definirmos uma função, podemos afirmar:
I Toda função tem parâmetros
II Quando nada retorna, o �po é void
III Quando todos os parâmetros são do mesmo �po, é suficiente usar o �po uma vez e separar os nomes
dos parâmetros por vírgulas
IV Na passagem por valor, o endereço da variável da função chamadora é passado para a função chamada
Após uma análise das afirma�vas acima, escolha a opção correta.
Considere os trechos abaixo:
int valor = 100;
void eureka (int &z) {
 int temp = 25;
 z--;
 temp = temp - 10;
ESTRUTURA DE DADOS 
Lupa Calc.
 
 
CCT0826_A2_201908648521_V1 
 
Aluno: COSMO ANDRADE FÉLIX Matr.: 201908648521
Disc.: ESTRUTURA DE DADOS 2020.3 EAD (GT) / EX
 
Prezado (a) Aluno(a),
 
Você fará agora seu TESTE DE CONHECIMENTO! 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.
Após responde cada questão, você terá acesso ao gabarito comentado e/ou à explicação da mesma. Aproveite para se familiarizar com
este modelo de questões que será usado na sua AV e AVS.
 
1.
Somente II III e IV estão corretas
Somente II e III estão corretas
Somente II e IV estão corretas
Somente II está correta
Somente I e II estão corretas
 
Gabarito
 Comentado
 
 
 
2.
javascript:voltar();
javascript:voltar();
javascript:duvidas('704047','7118','1','3620705','1');
javascript:duvidas('1083256','7118','2','3620705','2');
javascript:diminui();
javascript:aumenta();
javascript:calculadora_on();
 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 = 85
sendo que z é um parâmetro passado por valor
 
 
Será impresso 
 Auxiliar = 15 
Result = 1000 Valor = 85 
sendo que z é um parâmetro passado por referência 
 
 
Será impresso
Auxiliar = 15
Result = 999 Valor = 85
sendo que z é um parâmetro passado por valor
 
 
Será impresso
Auxiliar = 15
Result = 999 Valor = 85
sendo que z é um parâmetro passado por referência
 
 
Será impresso
Auxiliar = 15
Result = 1000 Valor = 100
sendo que z é um parâmetro passado por referência
 
 
 
 
 
Explicação:
Questão objetiva. Só é possível ser marcada a opção indicada no gabarito.
Vejamos a análise passo a passo do trecho de código....
int valor = 100;
void eureka (int &z) {
 int temp = 25;
 z--;
 temp = temp - 10;
 valor = valor - temp;
 cout << "Auxiliar = " << temp << endl;
}
int main() {
 int R = 1000;
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
Diga, para o trecho do programa abaixo, qual a opção que representa a saída em tela. Considere que o programa será compilado sem erros, e irá executar também sem
problemas.
void troca (int x, int *y){
 int tmp;
 tmp = *y;
 *y = x;
 x = tmp;
}
int main() {
 int a = 13, b = 10;
 troca( a, &b );
 cout<<"Valores: "<< a<<"\t"<< b<< endl;
 system("pause");
}
 eureka(R);
 cout << "Result = " << R << " Valor = " << valor << endl;
}
Passo a passo ....
Temos que valor recebeu 100 e valor é uma variável global.
Começando a execução pela main, temos que eureka é chamada e o valor 1000 é passado.
Iniciando a execução de eureka temos que :
 temp (local à eureka) recebe o valor 25, depois o valor 1000 passado é decrementado para 999, temp recebe 15, valor recebe 100-15,
que dá 85. Daí, o valor de temp é impresso, sendo mostrado na tela : Auxiliar = 15. DAí, a função termina e volta-se para a main. Lá
na main, após a chamada da eureka, temos a seguinte impressão :
 Result = 999 Valor = 85
Note que para R valer 999 só foi possível porque z é um parâmetro passado por referência.3.
o tipo das variáveis que serão utilizadas dentro da função.
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.
 
 
 
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.
 
 
 
 
4.
Valores: 31 01
Valores: 13 10
Valores: 10 13
Valores: 10 10
Valores: 13 13
 
 
 
javascript:duvidas('1070695','7118','3','3620705','3');
javascript:duvidas('2835767','7118','4','3620705','4');
Considere a função a seguir e a chamada da mesma efetuada no programa principal abaixo. Indique a opção que contem o que será
impresso.
int executar (int x, int &y) {
 x = y * 2;
 y = ++x;
 return x + y;
}
int main () {
int a=2, b=2, c=2;
c = executar (a, b);
cout << a << ", " << b << ", " << c;
}
Explicação:
 
A execução começa pela main. São passados o valor de a, que é 13 e o endereço de b, que vale 10. Em seguida, é chamada a função
troca e são passados o valor de a e o endereço de b. 
Executando a função troca, x recebe 13 e *y recebe 10. Mas ocorre a troca, usando tmp como auxiliar. Então x recebe 10 e *y recebe 13.
Ao terminar a execução da função, voltamos para a main e temos a sem mudanças e b com a mudança ocorrida na função. Note que x é
um parâmetro passado por valor e y é um parÂmetro passado por referência.
Portanto, a ficou 13 e b ficou 13.
Logo, será impresso : Valores: 13 13
 
 
 
 
5.
2, 5, 10
2, 2, 9
4, 5, 9
3, 5, 8
3, 2, 8
 
 
 
Explicação:
Fazendo um teste de mesa, temos o seguinte : 
A execução começa pela main. 
As variáveis a, b e c são iniciadas com 2.
Chama-se a função executar e são passados os valores de a e b, ou seja, 2 e 2.
Ao iniciar a execução da função executar temos que x é passado por valor e y por referência. Iniciando a função temos :
Em x = y * 2; Daí : x recebe 2 * 2, que dá 4
Em y = ++x; Daí : x é incrementado para 5 e depois y recebe 5.
Então, a soma de x + y é retornado. Ou seja, 10 é retornado.
Mas como y é passado por referência, a variável b na chamada da função foi alterada para 5. Nada, no entanto, ocorreu com a na
chamada da função, pois x foi passado por valor.
Ao voltar para main, será impresso 2, 5, 10
Portanto, qualquer outra opção é totalmente inviável.
 
 
 
 
 
 
6.
javascript:duvidas('1143053','7118','5','3620705','5');
javascript:duvidas('267928','7118','6','3620705','6');
 
Considere o trecho de um programa escrito em C++ : 
int func1 (long num) {
 int n, na=1;
 while (num / 10 != 0){
 na += 1;
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 os protótipos estão fora da ordem em
que as funções são descritas.
O programa executa perfeitamente independente da ordem das funções já que
existem os seus protótipos.
O programa não executa corretamente, pois o protótipo da função media( ) não
apresenta a identificação dos parâmetros, mas apenas os tipos dos mesmos.
O programa executa perfeitamente, mas não mostra o valor da media já que esta
função não foi chamada na função main( ).
 
Gabarito
 Comentado
 
 
 
7.
javascript:duvidas('1184239','7118','7','3620705','7');
 num /= 10;
 }
 return na;
}
main() {
 cout << func1 (132041);
}
Marque a opção correta que mostra o que é impresso na tela.
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;
6
4
2
1
3
 
 
 
Explicação:
Fazendo passo a passo :
int func1 (long num) {
 int n, na=1;
 while (num / 10 != 0){
 na += 1;
 num /= 10;
 }
 return na;
}
main() {
 cout << func1 (132041);
}
Passos : 
1) Chamada da função passando o valor 132041
2) Começa a função com num recebendo o valor 132041
3) na recebe 1 
4) enquanto num/10 é diferente de zero faça ... Vejamos : 132041/10 é diferente de zero então
 na recebe 2 e num recebe 13204
5) Volta no teste do loop... 13204 /10 é diferente de zero ? Sim. Então, na recebe 3 e num recebe 1320
6) Volta no teste do loop... 1320 /10 é diferente de zero ? Sim. Então, na recebe 4 e num recebe 132 
7) Volta no teste do loop... 132 /10 é diferente de zero ? Sim. Então, na recebe 5 e num recebe 13
8) Volta no teste do loop... 13 /10 é diferente de zero ? Sim. Então, na recebe 6 e num recebe 1
9) Volta no teste do loop... 1 /10 é diferente de zero ? Não.
Então, retorna o valor e na que é 6.
 
 
 
 
8.
javascript:duvidas('1083271','7118','8','3620705','8');
 for ( i = n; i >= 0; i--)
 {
 Y[j] = X[i];
 j++;
 }
 Y[j] = '\0';
}
algor
Ocorre erro, pois a função, que é do tipo void, não retorna o vetor Y.
ogla
algo
rogla
 
 
 
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
 
 
 
 
 
 
 
 Não Respondida Não Gravada Gravada
 
 
Exercício inciado em 14/09/2020 12:42:40. 
 
 
 
javascript:abre_colabore('36482','204824785','4084739157');
 
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.
 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.
ESTRUTURA DE DADOS 
Lupa Calc.
 
 
CCT0826_A1_201908648521_V1 
 
Aluno: COSMO ANDRADE FÉLIX Matr.: 201908648521
Disc.: ESTRUTURA DE DADOS 2020.3 EAD (GT) / EX
 
Prezado (a) Aluno(a),
 
Você fará agora seu TESTE DE CONHECIMENTO! 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.
Após responde cada questão, você terá acesso ao gabarito comentado e/ou à explicação da mesma. Aproveite para se
familiarizar com este modelo de questões que será usado na sua AV e AVS.
 
1.
Lista Sequencial
Pilha Sequencial
Pilha Encadeada
Fila Sequencial
Lista Encadeada
 
 
 
 
2.
Grafo
 Fila
 Pilha
Lista
Árvore
 
 
 
 
javascript:voltar();
javascript:voltar();
javascript:duvidas('641678','7118','1','3620705','1');
javascript:duvidas('619029','7118','2','3620705','2');
javascript:duvidas('2984998','7118','3','3620705','3');
javascript:diminui();
javascript:aumenta();
javascript:calculadora_on();
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.
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 ordemdireta 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:
Estão entre algumas das possíveis formas de estruturas de dados:
3.
pilha
árvore
fila
grafo
lista
 
 
 
Explicação:
Conforme gabarito e aula 1.
 
 
 
 
4.
As alternativas I e III estão corretas.
As alternativas I e II estão corretas
As alternativas III e IV estão corretas.
As alternativas II e IV estão corretas.
Todas as alternativas estão corretas.
 
Gabarito
 Comentado
 
 
 
5.
cout, Funções, vetores
Grafos, funções, fila
Árvores binárias, pilhas, algoritmos
Listas, vetores, cin
Árvores binárias, pilhas, vetores
 
 
 
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.
javascript:duvidas('230371','7118','4','3620705','4');
javascript:duvidas('1150353','7118','5','3620705','5');
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;
 
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 é ...
Estão entre algumas das possíveis formas de se estruturar dados:
Á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.
 
 
 
 
6.
Após a impressão dos valores pela ordem teremos uma fila e uma pilha.
Após a impressão dos valores pela ordem teremos uma pilha e uma fila.
Após a impressão dos valores pela ordem teremos duas filas.
Após a impressão dos valores pela ordem teremos duas pilhas.
Após a impressão dos valores pela ordem teremos uma fila e um grafo.
 
 
 
 
7.
grafo
árvore
lista
pilha
fila
 
 
 
Explicação:
Conforme gabarito e aula 1.
 
 
 
 
8.
javascript:duvidas('705085','7118','6','3620705','6');
javascript:duvidas('2985000','7118','7','3620705','7');
javascript:duvidas('27760','7118','8','3620705','8');
Algoritmos, lista ordenada, vetores.
Grafos, lista ordenada, algoritmos.
Lista encadeada, vetores, algoritmos.
Grafos, lista ordenada, vetores.
Grafos, algoritmos, fila.
 
 
 
Explicação:
FAlso. Algoritmos não são estrutura de
dados
Grafos, algoritmos, fila.
.
FAlso. Algoritmos não são estrutura de
dados.
Grafos, lista ordenada,
algoritmos.
 
Correto. Grafos, lista ordenada, vetores.
 
FAlso. Algoritmos não são estrutura de
dados.
Algoritmos, lista ordenada,
vetores.
 
FAlso. Algoritmos não são estrutura de
dados.
Lista encadeada, vetores,
algoritmos.
 
Gabarito
 Comentado
 
 
 
 
 
 
 Não Respondida Não Gravada Gravada
 
 
Exercício inciado em 10/08/2020 13:35:00. 
 
 
 
javascript:abre_colabore('36482','202540655','4060525480');

Outros materiais