Baixe o app para aproveitar ainda mais
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) rpreco = 12.99; (V) r j) p.preco = 99.99; (F) Uma forma certa : ppreco = 99.99 k) (*p)c = ‘P’; (F) Uma forma certa : pc = ‘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) plink = q; c) plinklink = qlinklinklink; d) qdado = 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) plinkdado = qlinkdado; 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 = “ << pmatricula << endl; cout << “Media = “ << pmedia << endl; q = new aluno; qmatricula = 20895; qmedia = 8.9; cout << qmatricula << endl; cout << qmedia << endl; Solução : TELA DO COMPUTADOR Matricula = 10989 Media = 9.5 20895 8.9
Compartilhar