Indexar lista encadeada!

7 respostas
joaofilipi

E ae pessoal, sou novo no forum, espero aprender e compartilahr um pouco dos meus conhecimentos aqui.

Minha dúvida é a seguinte, queria saber se é possivel indexar como se fosse um vetor uma lista encadeada, no qual eu tenho que saber qual o elemento do meio para poder fazer uma busca binária na lista usando recursividade.

Agradeço :wink:

7 Respostas

T

É, só que é uma operação lenta, já que você tem de percorrer a lista encadeada (linked list) até alcançar o elemento desejado.

A classe java.util.LinkedList é uma implementação de lista duplamente ligada, e ela tem um método get que pega o N-ésimo elemento (percorrendo a lista até chegar a tal elemento).

joaofilipi

Sim realmente é um processo lento. Tipo, sabendo q eu tenho a lista já ordenada e eu to querendo apenas saber qual é o valor que está no meio dessa lista, supondo que ela tenha o formato de um vetor, é possivel eu descobrir qual esse elemento por essa classe sem ter mais nenhuma informação a não ser a quantidade total de elementos?

T

Acho que você deu a resposta à própria pergunta.

Se você acha demorado percorrer uma lista ligada para achar um elemento no meio, pode usar uma Skip List. (Se a lista for relativamente pequena não há problemas).

E

Eu não sei se entendi sua pergunta, mas se vc quer pegar o elemento do meio não bastaria algo como objLista.get(objLista.leght/2) ?

Obs: Em java divisão de int\long por int\long retorna um int\long, ou seja se o resultado de objLista.leght/2 não for inteiro ele é truncado.

Espero que tenha ajudado…

Abraço

joaofilipi

Valeu pessoal agradeço a ajuda, vo tentar com LinkedList, se eu consseguir posto o resultado…flw

E

Opa, verdade, List usa size() , array é q usa .lenght() :stuck_out_tongue:

theBalrog

joaofilipi:
Sim realmente é um processo lento. Tipo, sabendo q eu tenho a lista já ordenada e eu to querendo apenas saber qual é o valor que está no meio dessa lista, supondo que ela tenha o formato de um vetor, é possivel eu descobrir qual esse elemento por essa classe sem ter mais nenhuma informação a não ser a quantidade total de elementos?

Cara, não sei se o que o pessoal respondeu ficou claro o suficiente. O caso é que se você tiver esse objeto tipo LinkedList que o pessoal falou, você consegue sim obter um determinado elemento, de posse apenas do tamanho da lista. E diga-se de passagem, esse objeto LinkedList tem o método size() que retorna quantos elementos estão contidos ali e o método get(N) que, como o amigo falou anteriormente, retorna o enésimo elemento da lista.

Criado 26 de maio de 2009
Ultima resposta 26 de mai. de 2009
Respostas 7
Participantes 4