[La espada se refiere a la oferta] Lista vinculada inversa (Entrevista con Ali)

Descripción del título
Ingrese una lista vinculada, después de invertir la lista vinculada, genere el encabezado de la nueva lista vinculada.
Ejemplo 1

输入
{
    
    1,2,3}
返回值
{
    
    3,2,1}

Solución
Tome 3 nodos como ejemplo:

  1. Utilice pre para registrar el nodo anterior del nodo actual

  2. Use next para registrar el siguiente nodo del nodo actual

  3. Definir un nuevo nodo cur y asignarlo a la cabeza

    El nodo actual a no está vacío, ingrese al bucle, primero registre la posición del siguiente nodo de a next = b; luego deje que el puntero de un apunte a
    la posición de pre y cur. Solo porque la posición del siguiente nodo se acaba de registrar , la lista enlazada Sin romper, dejamos que cur vaya a la posición de b.
    El nodo actual es que b no está vacío, primero registre la posición del siguiente nodo, deje que b apunte a la posición de pre, es decir, la posición de a, y mueva pre y head. El
    nodo actual c no está vacío, registre la posición del siguiente nodo, y deje que c apunte a b, Mueva pre y cur al mismo tiempo, en este momento cur está vacío, salta y vuelve a pre.

public class Solution {
    
    
    public ListNode ReverseList(ListNode head) {
    
    
        if(head == null || head.next == null) {
    
    
            return head;
        }
        ListNode cur = head;
        ListNode pre = null;
        ListNode next = null;
        while(cur != null) {
    
    
            next = cur.next;
            cur.next = pre;
            pre = cur;
            cur = next;
        }
        return pre;
    }
}

Supongo que te gusta

Origin blog.csdn.net/qq_45621376/article/details/114554091
Recomendado
Clasificación