Olá, Higor,

Que tal o seguinte: Chamemos a lista dada de ENTRADA e comece com SAIDA
sendo uma lista vazia. ENTRADA então é uma lista de listas.

Fixe uma lista ENT da ENTRADA, verifique se ela é sublista de alguma lista
da SAIDA. Se não for, verifique se alguma lista SAI da SAIDA é sublista de
ENT, se for remova a lista SAI da SAIDA e, ao final, coloque ENT na SAIDA.

Modificando um pouco, fica assim:

1 - Para cada lista ENT pertencente a ENTRADA faça
  2 - Seja PERTENCE <- FALSO
  3 - Para cada lista SAI pertencente a SAIDA faça
    4 - Se ENT é sublista de SAI então
      4.1 - PERTENCE <- VERDADEIRO
      4.2 - finalize o loop 3 (isto é, vá para 6)
    5 - Se SAI é sublista de ENT então
      5.1 - remova SAI de SAIDA
      5.2 - finalize o loop 3 (neste caso não precisa verificar o resto da
lista SAIDA)
  6 - Se PERTENCE = FALSO coloque ENT em SAIDA (senão chupe o dedo :P)
7 - retorne SAIDA

Gustavo.

Em 4 de agosto de 2010 16:41, Higor <[email protected]> escreveu:

>
> Olá Pessoal,
> estou com um problema gigantesco aqui. Tendo a estrutura abaixo (Um List
> com cada um dos elementos com um campo
> CamadaSuperior que indica o seu superior):
>
> Empresa de Teste | Diretoria de teste | UN de teste | UR de teste
> Empresa de Teste | Diretoria de teste | UN de teste | UR de teste | teste
> Empresa de Teste | Diretoria de teste | UN de teste | UR de teste 2
> Empresa de Teste |
> Empresa de Teste | Diretoria de teste
> Empresa de Teste | Diretoria de teste | UN de teste
> Empresa de Teste | Diretoria de teste | UN de teste | UR de teste 2 | teste
> 2
>
> Assim acima tem-se uma List com 7 elementos e seus camadas superiores (Ex:
> teste2 tem como camada superior
> "UR de teste 2" que tem como camada superior "UN de teste").
>
> Veja que um algoritmo anterior (que montou essa estrutura) percorre um
> banco de dados e vai da camada x até a camada y.
> Ou seja, pode-se ver, da esquerda para direita, que sempre vamos até a
> camada mais externa que é a empresa.
>
> Preciso fazer um algoritmo que nao replique as estruturas, assim seria
> exibido apenas:
> Empresa de Teste | Diretoria de teste | UN de teste | UR de teste | teste
> Empresa de Teste | Diretoria de teste | UN de teste | UR de teste 2 | teste
> 2
>
> Fiz um algoritmo mas ficou extremamente complexo muito dificil de manter,
> alguem tem uma sugestao por favor?
>
> Agora pouco pensei em fazer uma List que armazene-os e tive as réplicas,
> mas ainda nao fiz o algoritmo.
>
> Por favor dêem uma luz ai pessoal.
>
> Abraços.
> Higor
>
>  --
> You received this message because you are subscribed to the Google Groups
> "Lisp-br" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected]<lisp-br%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/lisp-br?hl=en.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Lisp-br" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/lisp-br?hl=en.

Responder a