Invertir una lista en el lugar en C
Tres punteros recorren la lista una vez, volteando cada enlace al pasar.
typedef struct Node {
int value;
struct Node *next;
} Node;
Node *reverse(Node *head) {
Node *prev = NULL;
while (head != NULL) {
Node *next = head->next;
head->next = prev;
prev = head;
head = next;
}
return prev;
}
Cómo funciona
nextse guarda antes de sobrescribir el enlace.prevviene detrás y se convierte en la nueva cabeza.- No se reserva memoria en absoluto.
Palabras clave y builtins usados aquí
NULLintreturnstructtypedefwhile
El intento, en números
- Líneas
- 15
- Caracteres a escribir
- 217
- Tokens
- 67
- Ritmo de tres estrellas
- 100 tpm
Al ritmo de tres estrellas de 100 tokens por minuto, este intento toma unos 40 segundos.
Paso 3 de 5 en Listas y pilas; paso 8 de 20 en Estructuras de datos y algoritmos.