Revertir la lista lista enlazada ligado unidireccional y bidireccional

 

Descripción del problema:

Revertir la de una vía y lista enlazada de dos vías lista enlazada.

 

algoritmo:

1. reversión de cadena sencilla

Nodo clase pública { 

int valor público;
Nodo público el próximo;

Nodo pública (int value) {
this.value = valor;
}
}


Pública Nodo reverseList (cabeza Node) {

nodo precargado = null;
Nodo siguiente = null;
mientras que (la cabeza! = null) {

próxima = head.next;
head.next = pre;
pre = cabeza;
cabeza = próximo;
}
Devolver pre;
}

2. Invertir lista doblemente enlazada

DoubleNode public class { 

int valor público;
pública DoubleNode última;
pública DoubleNode siguiente;

DoubleNode pública (int value) {
this.value = valor;
}
}


Pública DoubleNode reverseList (cabeza DoubleNode) {

DoubleNode pre = null;
DoubleNode siguiente = null;

mientras que (la cabeza! = null) {

próxima = head.next;
head.next = pre;
head.last = próximo; //注意区别
pre = cabeza;
cabeza = próximo;
}

Devolver pre;
}

Análisis algoritmo:

1. reversión de cadena sencilla

(1) una sola cadena invertida, con dos variables adicionales de nodos, un nodo al siguiente nodo Head almacena temporalmente, como una primera lista enlazada nodo después de la inversión;

(2) Tenga en cuenta que, cómo romper, cómo marcar la lista no se invierte, después de la inversión de cómo generar la lista del primer nodo y en constante aumento elemento.

2. Invertir lista doblemente enlazada

Doblemente lista y lista única invertida vinculado diferencia principalmente se encuentra en el conjunto de nodos a "nodo predecesor" para la corriente vinculada, pero después de un nodo en el nodo actual se invierte cuando sus nodos precursoras.

 

Supongo que te gusta

Origin www.cnblogs.com/heibingtai/p/12649961.html
Recomendado
Clasificación