Listas Duplamente ligadas JAVA

tenho por exemplo Isto em JAVA
1 - 3 - 23 - 15

isto e um lista duplamente ligada com ponteiro para cauda (sempre que se insere um elemento insere na cauda)

eu quero inverter a lista para ficar desta forma 15 - 23 - 3 - 1

public void inverter(){

No cauda = null;
No actual = cabeca;
No aux = null;

while (actual != null) {
aux = actual.prox;
actual.prox = cauda;
cauda = actual;
actual = aux;
}

cauda = cabeca;

}

se depois inserir a seguinte lista (10 - 55 - 2 - 8) o resultado com este metodo ele mostra o seguinte :

(15 - 10 - 55 - 2 - 8) , mas eu quero que fique (15 - 23 - 3 - 1 - 10 - 55 - 2 - 8).

Alguem me poderia dar uma ajuda, é que com este metodo eu nao consigo actualizar os ponteiros

obrigada
 
Podes fazer um metodo com um ciclo que corre da cauda para a cabeça e mete os valores numa nova lista, retornando a mesma no fim

em todo caso Collections de java tem reverse
 
Mas existe alguma possibilidade de trocar apenas o conteúdo dos nos em vês do nó completo com as referencias ?

Podem dar-me ai um exemplo de codigo ou assim pra ficar um pouco mais clarificado?

obrigado
 
PtNo inverter (PtNo raiz) {
/* verifica se o ponteiro está vazio */
if (raiz.equals(NULL))
return NULL;

/* fazer a troca do next com o previous */
PtNo aux = raiz.next;
raiz.next = raiz.prev;
raiz.prev = aux;

/* teste de chamada recursiva */

/* se o proximo elemento (neste caso como já foi feita a troca é o previous) for
diferente de NULL, então volta-se a chamar a função.
caso contrario, é pk estás no ultimo elemento da lista e entao tens que retornar
o endereço desse elemento */

if (!raiz.prev.equals(NULL))
return inverter(raiz.prev);
else
return raiz;
}


Não testei, mas esta solução recursiva parace-me resolver o teu problema..
foi feita às 3 pancadas, e se nao vais trabalhar com um número mt grande de nós, a diferenca de desenpenho é nula.

atençao k o código é um bocado misto de C com java.. o facto de ultimamente só trabalhar em C e já nao pegar em java à bastante tempo, depois acontece isto
 
Última edição:
Back
Topo