Considere uma lista ligada simples com três nós:
1 -> 2 -> 3
A seta -> representa a ligação entre os nós. Inicialmente, temos:
$previous = $next = null;
$current = $head; // assumindo que $head seja o primeiro nó (1)
Estado Inicial:
$previous = null
$current = 1 -> 2 -> 3
$next = null
Agora, vamos entrar no ciclo while para inverter a lista. Vou descrever cada passo com um diagrama:
Passo 1:
$next = $current->next; // $next = 2
$current->next = $previous; // inverte a seta, $current = 1 <- null
$previous = $current; // $previous = 1
$current = $next; // $current = 2
Estado após Passo 1:
$previous = 1
$current = 2 -> 1 -> 3
$next = 2
Passo 2:
$next = $current->next; // $next = 3
$current->next = $previous; // inverte a seta, $current = 2 <- 1
$previous = $current; // $previous = 2
$current = $next; // $current = 3
Estado após Passo 2:
$previous = 2
$current = 3 -> 2 -> 1
$next = 3
Passo 3:
$next = $current->next; // $next = null (fim da lista)
$current->next = $previous; // inverte a seta, $current = 3 <- 2
$previous = $current; // $previous = 3
$current = $next; // $current = null (fim da lista)
Estado após Passo 3:
$previous = 3
$current = null
$next = null