Buscar

GABARITO_Lista7 ESTRUTURA DE DADOS

Prévia do material em texto

Lista 7 – Alocação dinâmica / Listas Encadeadas 
 
 
1) Considere 
 
struct caixa { 
 char c; // refere-se a cor : P (preta) ou B (branca) 
 float preco; 
 } ; 
 
caixa *p, *q, *r; 
caixa x, y, z; 
 
Assinale V (verdadeiro) ou F (falso). Caso seja verdadeiro, exemplifique, mas se 
for falso, reescreva uma possível forma correta. 
 
SOLUÇÃO : r 
 
a) r = &x; (V) 
 
 
 
b) p = r; (V) r 
 p 
 
 
 
c) q = y; (F) 
 
 Uma forma correta : q = &y; 
 
 
d) r = NULL; (V) r 
 
 
 
e) p = *x; (F) 
 
Uma forma correta : p = &x; 
 
f) *q = NULL; (F) 
 
Uma forma correta : q = NULL; 
 
g) *p = *x; (F) 
 
Uma forma correta : *p = x; 
 
 
 
c 
preco 
c 
preco 
 
h) z.c = ‘B’; (V) z z 
 
 
 
i) rpreco = 12.99; (V) 
 
 r 
 
 
 
 
 
 
j) p.preco = 99.99; (F) 
 
Uma forma certa : ppreco = 99.99 
 
 
k) (*p)c = ‘P’; (F) 
 
Uma forma certa : pc = ‘P’; 
 
 
 
 
2) Considere struct no { 
 int dado; 
 struct no *link; 
 }; 
 
 no *p, *q; 
 
e as listas encadeadas abaixo : 
 
 
 
 
 
 
 
 Sempre a partir das considerações acima, diga objetivamente ou represente graficamente, o 
que ocorrerá com as listas após cada item. Atenção : Um item não interfere no seguinte. 
 
 
 
 
 
 
1 3 
 
 5 
 
 q 
2 4 
 
 6 
 
 p 8 
 
 
c 
 
preco 
B 
c 
preco 
12.99 
 
SOLUÇÃO : 
 
a) p = q; 
 
 
 p 
 
 
b) plink = q; 
 
 
 
 
 
c) plinklink = qlinklinklink; 
 
 
 
 
 
 
 
d) qdado = 100; 
 
 
 
 
 
 
 
 
 
 
 
 
100 3 
 
 5 
 
 q 
1 3 
 
 5 
 
 q 
2 4 
 
 6 
 
 p 8 
 
 
1 3 
 
 5 
 
 q 
2 4 
 
 6 
 
 p 8 
 
 
1 3 
 
 5 
 
 q 
2 4 
 
 6 
 
 8 
 
 
 
e) plinkdado = qlinkdado; 
 
 
 
 
 
f) q = NULL; 
 
 
 
q 
 
 
 
3) Seja o trecho 
 
int *p, *q, x = 10; 
 
q = &x; 
p = new int; 
*p = *q; 
cout << “ X = “ << x 
 << “*p = “ << *p 
 << “*q = “ << *q 
 << endl; 
 
a) p e q são iguais ? Justifique. 
 
Solução : Não, pois apontam para áreas distintas de memória. O ponteiro q 
fornece o endereço de x e o ponteiro p, fornece o endereço de uma área de 
memória alocada em tempo de execução (alocação dinâmica). 
 
b) *p e * q são iguais ? Justifique. 
 
Solução : Sim, pois *p, que significa o conteúdo da área apontada por p, vale 
10 e *q (conteúdo da área apontada por q) também vale 10. 
 
Obs.: Veja o que é impresso na tela : 
 
X = 10 *p = 10 *q = 10 
1 3 
 
 5 
 
 
1 3 
 
 5 
 
 q 
2 3 6 
 
 p 8 
 
 
 
 
 
4) O que é impresso na tela , considerando o trecho dado abaixo ? 
 
struct aluno { 
 int matricula; 
 float media; 
} ; 
 
aluno a, *p, *q; 
 
a.matricula = 10989; 
a.media = 9.5; 
p = &a; 
cout << “ Matricula = “ << pmatricula << endl; 
cout << “Media = “ << pmedia << endl; 
q = new aluno; 
qmatricula = 20895; 
qmedia = 8.9; 
cout << qmatricula << endl; 
cout << qmedia << endl; 
 
 
Solução : 
 
TELA DO COMPUTADOR 
 
Matricula = 10989 
Media = 9.5 
20895 
8.9

Continue navegando

Outros materiais