Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

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

Já tem uma conta?

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

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

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

Já tem uma conta?

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

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

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

Já tem uma conta?

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

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

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

Já tem uma conta?

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

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

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

Já tem uma conta?

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

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

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

Já tem uma conta?

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

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

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

Já tem uma conta?

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

Prévia do material em texto

ESTRUTURA DE DADOS 
CCT0753_A8_201801076693_V4 
 
 
Lupa Calc. 
 
 
 
 
 
Vídeo 
 
PPT 
 
MP3 
 
 
Aluno: SÉRGIO RICARDO SIMÃO Matrícula: 201801076693 
Disciplina: CCT0753 - ESTRUTURA DE DADOS Período Acad.: 2018.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. 
 
 
Dr. Pei Tam possui uma lista não ordenada de 
pacientes de seu consultório em que registra 
apenas o nome endereço e o telefone de cada 
paciente. Como não há limites para o crescimento 
de sua lista, como se pode implementar a inserção 
de um novo paciente na lista, sabendo que cada 
paciente é do tipo Paciente e a lista é do tipo List 
assim definidos : 
struct Paciente { 
 long int matricula; 
 string nome, endereco e tel; 
}; 
struct List { 
 Paciente p; 
 struct List *link; 
 }; 
 
 
List insereCliente(List *i, Paciente pac) 
{ 
 List novo[]; 
 novo[0].p = pac; 
 novo[0].link = i; 
 return novo; 
} 
 
List * inserePac(List *i, Paciente pt){ 
 List *novo ; 
 novo->p = pt; 
 novo->link = i; 
 return novo; 
} 
 
 List * inserePac(List *i, Paciente pac) 
{ 
 List *novo = new List; 
 novo.p = pac; 
 novo.link = i; 
 return novo; 
} 
 
List * inserePac(List *i) { 
 List *novo = new List; 
 Paciente pat; 
 novo->p = pat; 
 novo->link = i; 
 return novo; 
} 
 
 
List * inserePac(List *i, Paciente pt) 
{ 
 List *novo = new List; 
 novo->p = pt; 
 novo->link =i; 
 return novo; 
} 
 
 
Gabarito Coment. 
 
 
 
 
 
 
2. 
 
 
Sou uma empresária que quer crescer e por isso, tenho que 
aumentar progressivamente a minha lista de clientes, sem limitar 
este crescimento. Assim, à medida que novos clientes são 
cadastrados, posso, se necessário, contratar mais e mais 
empregados. Marque a opção que especifica o tipo de lista e o tipo 
de alocação de memória mais adequados para este problema. 
 
 
fila dinâmica e alocação dinâmica de memória 
 
fila encadeada e alocação dinâmica de memória 
 
 
lista encadeada e alocação dinâmica de memória 
 
pilha dinâmica e alocação dinâmica de memória 
 
lista sequencial e alocação dinâmica de memória 
 
 
Gabarito Coment. 
 
 
 
 
 
 
3. 
 
 
O conceito de ponteiros foi estudado em uma de nossas 
aulas. Sendo assim, leia atentamente as afirmativas 
abaixo e assinale a opção correta. 
 
I A variável ponteiro não precisa ser declarada. 
II A variável ponteiro armazena endereço. 
III Quanto se usa &nomeDaVariávelPonteiro com o 
comando cout, é exibido o endereço da variável 
apontada pela variável ponteiro. 
IV Quando se usa nomeDaVariávelPonteiro com o 
comando cout, é exibido o endereço da variável 
ponteiro. 
V Quando se usa *nomeDaVariávelPonteiro com o 
comando cout, é exibido o conteúdo da variável 
apontada pela variável ponteiro. 
 
 
IV e V estão corretas 
 
I, II e IV estão corretas 
 
I IV e V estão corretas 
 
 
II e V estão corretas 
 
 
Somente a II está correta 
 
 
Gabarito Coment. 
 
 
 
 
 
4. 
 
Considere 
 
 
int *ptr, *qtr, *r; 
 
int a = 10, b = 20; 
 
 
 
Após executar cada instrução conforme a 
ordem dada a seguir : 
 
 
ptr = &a; 
 
qtr = &b; 
 
*ptr = *ptr + *qtr; 
 
++(*qtr); 
 
r = qtr; 
 
qtr = ptr; 
 
 
 
assinale a opção que mostra, correta e 
respectivamente, os valores de *ptr, *qtr 
, *r , a e b . 
 
 
 
 
30 20 20 10 20 
 
30 20 0 30 21 
 
30 21 21 10 20 
 
30 30 21 10 20 
 
 
30 30 21 30 21 
 
 
 
 
 
 
5. 
 
 
Em uma aplicação que usa apenas o processo de alocação estática 
de memória é correto afirmar que: 
 
 
A memória utilizada pela aplicação é totalmente alocada após o inicio de sua execução 
 
 
Toda a memória utilizada pela aplicação não muda durante toda a sua execução 
 
 
Apenas a memória associada às variáveis do tipo vetor é alocada após o inicio da execução da 
aplicação 
 
A memória utilizada pela aplicação é inicialmente estática, mas pode mudar 
 
Todas as afirmações acima são incorretas 
 
 
Gabarito Coment. 
 
 
 
 
 
 
6. 
 
Admita a seguinte estrutura de nó de uma lista simplesmente 
 
encadeada: struct tno { int chave; tno *proximo; }; Admita, 
agora, a seguinte declaração de uma variável do tipo nó: tno *no; 
Qual das alternativas a seguir traz uma operação válida sobre 
essa variável? 
 
 
no->proximo = -10; 
 
 
no->proximo = new tno; 
 
no.chave = 5; 
 
no->chave = new int; 
 
no.proximo = no; 
 
 
 
Explicação: 
Analisando cada item : 
 no.chave = 5; 
>> Como no é ponteiro então temos que usar a seta para acessar os campos da área apontada por no. 
 no->proximo = -10; 
>> O campo proximo é de ponteiro então não pode receber inteiro. 
 no->chave = new int; 
>> O campo chave é de inteiro então não deve receber endereço de inteiro. O operador new aloca memória e retorna 
o endereço da área alocada. 
 no->proximo = new tno; 
>> É correto porque o campo proximo é campo de ponteiro e pode receber outro ponteiro, pode receber NULL ou 
pode receber endereço da área alocada com new, como foi o caso. 
 
no.proximo = no; 
>> Incorreto porque não pode se pode usar o ponto para acessar campo de struct apontada pelo ponteiro no. 
 
 
 
 
 
 
 
7. 
 
 
Qual o valor de x no final do programa? int main() { int x, *p, y; x 
= 2; p = &x; y = *p; y = 5; (*p)++; (*p) = (*p) - y; return(0); } 
 
 
5 
 
Nenhuma das anteriores. O programa possui um erro de sintaxe. 
 
 
8 
 
2 
 
 
-2 
 
 
 
Explicação: 
Analisando passo a passo : 
int main() { 
int x, *p, y; 
x = 2; 
p = &x; // p aponta para x, sendo que x recebeu 2 
y = *p; //y recebeu o conteúdo da área apontada por p, ou seja, y recebeu *p que é 2 
y = 5; //y recebeu 5 
(*p)++; //A área apontada por p recebeu 3 Ou seja, x recebeu 3 
(*p) = (*p) - y; //*p, que é x recebeu 3 - 5. Ou seja, *p recebeu -2 
return(0); 
} 
Como p aponta para x e *p recebeu -2, então x recebeu -2 
 
 
 
 
 
 
8. 
 
 
 
Seja uma lista encadeada cujo nodo é representado por: 
struct nodo{ 
 int valor; 
 nodo prox; 
}; 
 
Esta estrutura possui um ponteiro de referência que aponta 
sempre para o primeiro nodo da lista, sendo este declarado 
como: nodo *lista; 
Numa lista encadeada seu último nodo possui o 
campo prox sempre igual a NULL. Marque a opção que 
representa o trecho de código onde um ponteiro auxiliar é 
capaz de percorre a lista até seu último nodo: 
 
 
 
nodo *aux=lista; 
while(aux->prox)aux=aux->prox; 
 
nodo *aux=lista; 
while(aux)aux->prox=aux; 
 
 
nodo *lista=aux; 
while(aux->prox)aux=aux->prox;nodo *aux=lista; 
while(lista->prox)aux=aux->prox; 
 
nodo *aux=lista; 
while(aux->prox)aux->prox=aux->prox; 
 
 
 
Explicação: 
nodo *aux=lista; 
while(aux->prox)aux=aux->prox; 
 
 
 
 
 
 
 
Legenda: Questão não respondida Questão não gravada Questão gravada 
 
 
 
Exercício inciado em 20/11/2018 11:48:05.

Mais conteúdos dessa disciplina