Acho que neste caso a ideia é pegar o primeiro elemento de uma lista e coletar todas as listas que têm aquele mesmo elemento como o primeiro elemento, e removendo este elemento de cada uma delas. Depois aplica a de forma recursiva para esta lista coletada.
Você poderia colocar a impressão dos elementos usando essa mesma função, mas daí também vai tem que passar como parâmetro o recuo necessário para imprimir os elementos sempre que trocar de linha. Na verdade acho que usando essa ideia nem precisaria do algoritmo anterior, bastando não imprimir as listas que, após a recursão, ficam vazias, mas você pode manter o algoritmo anterior por simplicidade. Em 4 de agosto de 2010 20:30, Higor <[email protected]> escreveu: > Fala Gustavo, > puuuxaaa como posso lhe agradecer? Funcionou de forma perfeita. Bem melhor > que a minha estrutura anterior. > Ele realmente retornou um array com os dois arrays dentro de um array com a > estrutura: > > 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 > > Porém, eu preciso exibir da seguinte forma: > > > Empresa de Teste | Diretoria de teste | UN de teste | UR de teste | teste > > UR de teste 2 | teste 2 > > Ou seja, qdo os campos se repetirem eu preciso colocar um espaço em branco > entre eles. > > Minha ideia é ordenar esse ArrayList de forma que os parecidos estejam > proximos e > troca-los por espaço em branco. > > Não sei se ele consegue ordenar o array desse jeito (colocando todas > proximas uma das outras) > acho que preciso mudar um pouco a estrutura. Vou dar uma testada nessa > ordenacao. Depois > possivelmente terei que comparar-los pra ver se sao iguais. > > Se alguem tiver uma dica eu agradeço. > > Mais uma vez obrigado Mario e Gustavo pela ajuda. > > Abraços. > Higor > > > Em 4 de agosto de 2010 17:13, Gustavo <[email protected]> escreveu: > > 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]<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]<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.
