Cómo invertir in situ una lista enlazada individualmente en bucle Informe del experimento
/Almacene el siguiente elemento señalado por el puntero actual durante el proceso de recorrido,
/Luego invierta el puntero al elemento del nodo actual,
/Utilice el puntero almacenado para continuar retrocediendo
struct linka
{<
int datos;
linka* siguiente
};
void inverso(linka*amp; head)
{
if(head = =NULL)
return;
linka *pre, *cur, *ne; >
cur=head -gt;siguiente;
mientras(cur)
{
ne = cur-gt;siguiente;
cur-gt; siguiente = pre;
pre = cur;
cur = ne;
}
cabeza- gt; next = NULL;
head = pre;
}
// Método 2: usar recursividad.
// La idea básica de este método es llamar a una función recursiva para revertir los nodos posteriores antes de revertir el nodo actual.
// Sin embargo, este método tiene la desventaja de que es decir, se formará un bucle en el último nodo después de la reversión,
// Por lo tanto, el siguiente campo del nodo devuelto por la función debe establecerse en NULL. El código fuente es el siguiente:
linka* reverse(linka* p, linka*amp; head)
{
if(p == NULL | p-gt ;siguiente == NULL)
{
head=p;
return p;
}
else
{
linka* tmp = revertir(p-gt; siguiente, encabezado);
tmp-gt; /p>
devuelve p;
}
}