[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: pasagem obscura



Professor, quanto a seguinte passagem...
> > 
> >        ptr->id = el (j);
> >        el (j)->g_entr++;
> >        ptr->prox_suc = el (i)->topo_suc;
> >        el (i)->topo_suc = ptr;
> > 
queria saber se a minha interpretacao esta correta:
Primeio eh alocada a memoria para um ponteiro de estrutura sucessor
Depois o id desse ponteiroaponta para o endereco de memoria que contem a
informacao da estrutura ELS com id = J (ou J - 1, nao importa)...
Depois, o g_entr do ELS de ID=J eh incrementado em um, pois existe um arco
que sai de I e vai para J. Na terceira linha, o proximo sucessor do
ponteiro, recebe o valor do topo sucessor do ELS com ID=I, ai na quarta
linha, o topo sucessor ELS que tem ID=I aponta para esse ponteiro (mas e
depois de declarado novamente esse ponteiro com o mesmo nome, nao vai
haver conflito ou ele vai alocar outra memoria?)
Entao pelo que vejo, quando voce escreve el(k), esta querendo dizer o
endereco da memoria que aponta para o k-esimo elemnto da estrutura
encadeada ELS, isto eh, para o elesemnto de ELS que tem seu ELS->ID=K, eh
isso ou estou falando baboseiras?
Outra coisa...
Quando voce escreve o for de inicializacao do els:

for (ptr = els, k=1; ptr<els + n; ptr++, k++) {
	ptr->id = k;
	...
}
Eu poderia economizar essa variavel k e escrever da seguinte maneira:
for (ptr= els; ptr<els+n; ptr++) {
	ptr->id = ptr - els + 1;
	...
}
Iria funcionar nao?
Obrigado
Paulo