Java preguntas de la entrevista ------ lista inversa

cosecha:

  • 1. La lista de nodos consta de dos partes, una parte de la información actual se almacena, señalando a otra parte del nodo de almacenamiento a la siguiente
  • 2. implementación recursiva es realmente difícil de entender, mucho veces más optimistas

Revertir una lista enlazada.

Ejemplo:

Entrada: 1-> 2-> 3-> 4- > 5-> NULL
salida: 5-> 4-> 3-> 2- > 1-> NULL

Aquí Insertar imagen Descripción
Análisis: Para la transcripción inversa de esta lista, resulten necesarios después de la frente, la parte delantera se convierte en la parte posterior, por lo que encontrar la manera de revertir la parte delantera y trasera, juez luego invertido para determinar si la condición se ha vuelto curr está vacío porque en términos relativos , Curr fue al frente
Aquí Insertar imagen Descripción

  • aplicación iterativa
public ListNode reverseList(ListNode head) {
    ListNode prev = null;
    ListNode curr = head;
    while (curr != null) {
        ListNode nextTemp = curr.next;
        curr.next = prev;
        prev = curr;
        curr = nextTemp;
    }
    return prev;
}
  • recursiva

Comprender: ListNode p = reverseList(head.next);
Este medio de la línea que -> estará al frente de la reversión lista, p representa la cola de la lista después de la inversión, que se invierte antes de que la cabeza de la lista, head.next.next=heades la lista de puntos a la inversa, head.next=nulles de señalar que cortar hacia adelante .

public ListNode reverseList(ListNode head) {
    if (head == null || head.next == null) return head;
    ListNode p = reverseList(head.next);
    head.next.next = head;
    head.next = null;
    return p;
}
Publicado 87 artículos originales · ganado elogios 7 · vistas 5024

Supongo que te gusta

Origin blog.csdn.net/y18791050779/article/details/105060640
Recomendado
Clasificación