Estrutura de Dados
Considere a seguinte declaração de estrutura: struct Celula
{
int N;
Celula * Prox;
};
Celula* Q, R, S;
Celula T; int G;
Assuma que a estrutura encontra-se no seguinte estado:
Q
R
S
T
1
2
3
4
5
6
Figura 1
1) Atribuições:
a) Q=Q->Prox;
Q
R
S
T
1
2
3
4
5
6
b) *Q=*Q->Prox;
Q
R
S
T
1
3
3
UEM – Universidade Estadual de Maringá
Departamento de Informática
Professor Yandre Maldonado e Gomes da Costa yandre@din.uem.br 4
5
6
c) Q->Prox=Q->Prox->Prox;
Q
R
S
T
1
2
3
4
5
6
d) Q=R->Prox;
Q
R
S
T
1
2
3
4
e) S->Prox=Q->Prox; Q->Prox=S;
Q
R
5
6
S
T
1
2
3
4
5
6
f) S->Prox=S; T=*Q; *Q=*S; *S=T;
Q
R
S
T
1
2
3
Q
4
R
5
6
S
T
1
2
3
Q
4
R
5
2
S
T
1
5
3
UEM – Universidade Estadual de Maringá
Departamento de Informática
Professor Yandre Maldonado e Gomes da Costa yandre@din.uem.br 4
5
2
Q
R
1
5
3
S
4
2
2
g) Q->Prox=T;
Impossível executar, pois os tipos são incompatíveis.
2) Assuma as mesmas declarações e condições iniciais descritas na figura 1. Descreva, quando possível, as seqüências de comandos que convertam a situação inicial para cada uma das situações descritas nos diagramas apresentados a seguir. Quando julgar a conversão impossível, justifique.
Q
a)
R
S
T
1
2
3
4
5
6
Q=Q->Prox;
b)
Q
R
S
T
1
2
3
R->Prox=S;
R=Q->Prox;
Q->Prox=R->Prox;
R->Prox=Q;
ou
R->Prox=S;
S=R;
R=Q->Prox;
Q->Prox=S;
UEM – Universidade Estadual de Maringá
Departamento de Informática
Professor Yandre Maldonado e Gomes da Costa yandre@din.uem.br 4
5
6
R->Prox=Q;
S=S->Prox;
c)
Q
R
S
T
1
2
3
4
5
6
Q->Prox->Prox=S;
S->Prox=R;
d)
Q
R
S
T
1
2
3