mvrocha
(usa Ubuntu)
Enviado em 21/06/2010 - 16:45h
Se a lista eh encedeada circular , a variavel termino indica o fim porem deve haver uma variavel INICIO pois nao sabe-se onde comecara a listagem , por exemplo :
- depois de varias movimentacoes de dados eh comum neste tipo de estrutura encontrarmos o primeiro registro como idades[40] e o termino (fim da lista) na posicao idades[10]
ILUSTRANDO :
| Cadastro2 | Cadastro3 | Cadastro4 | VAZIA | VAZIA | Cadastro0 | Cadastro1 |
Neste caso a solucao do "colega" falharia;
assim com essa variavel inicio:
if (inicio < termino)
for( i = inicio ; i < termino ;)
{
if(idades[(i + inicio)%50].idade % 2) printf("Idades[%d]:%d",i,idades[i].idade);
i = (i+1)%50;
}
else
{
for( i = 0 ; i < termino ; i++ ) printf("Idades[%d]:%d",i,idades[i].idade);
for( i = inicio ; i < 50 ; i++ ) printf("Idades[%d]:%d",i,idades[i].idade);
}
Pronto!!
Espero ter ajudado.