Una lista enlazada simple
Nodos, propiedad y recorrido.
Una lista enlazada simple es una lección gratuita de Zig Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Zig Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Zig Academy incluye 4 lecciones en total.
Qué es una lista enlazada
Una lista simplemente enlazada encadena valores: cada nodo contiene un valor y un puntero al nodo siguiente, o null al final. 🔗
Defina el nodo
Un nodo es un struct con un valor y un puntero opcional al nodo siguiente. Opcional significa que el último nodo apunta a null.
const Node = struct {
value: i32,
next: ?*Node,
};Por qué el puntero es opcional
Usar ?*Node permite terminar la cadena de forma segura. No hace falta un valor centinela especial para marcar el final.
next: ?*NodeLa lista sigue la cabeza
La lista solo recuerda el primer nodo, llamado cabeza, además del asignador que posee todos los nodos.
const List = struct {
head: ?*Node,
alloc: std.mem.Allocator,
};Asigne un nodo
Para añadir un valor, pida al asignador que cree un único Node en el heap. Esto devuelve un puntero a almacenamiento nuevo.
const node = try self.alloc.create(Node);Inserte al principio
La inserción más barata se hace en la cabeza: apunte el nodo nuevo a la cabeza anterior y conviértalo en la nueva cabeza. Se ejecuta en tiempo constante.
node.* = .{ .value = v, .next = self.head };
self.head = node;Recorra la cadena
Para recorrerla, empiece en head y siga cada puntero next hasta llegar a null. Un bucle while representa bien este recorrido.
var cur = self.head;
while (cur) |n| {
std.debug.print("{d}\n", .{n.value});
cur = n.next;
}La captura desenvuelve el opcional
Escribir while (cur) |n| ejecuta el cuerpo solo mientras cur no sea null, y n es el puntero desenvuelto. El bucle termina al llegar a null.
while (cur) |n| { ... }Cada nodo es suyo
Cada nodo procede del asignador, así que debe devolverlo. Olvidar siquiera uno es una fuga que el asignador de pruebas notificará.
Libere toda la lista
Recorra la cadena en deinit, pero guarde next antes de liberar el nodo, porque desaparece en el momento en que lo destruye.
var cur = self.head;
while (cur) |n| {
const nxt = n.next;
self.alloc.destroy(n);
cur = nxt;
}Hágala genérica
Incluya Node y List en una función que devuelva un tipo para que la lista funcione con cualquier tipo de elemento, no solo con i32.
fn LinkedList(comptime T: type) type {
return struct {
const Node = struct { value: T, next: ?*Node };
};
}Comprobación rápida
Está liberando una lista enlazada nodo por nodo. ¿Qué debe hacer antes de destruir cada nodo?
Resumen
Los nodos contienen un valor y un puntero next opcional. La lista sigue la cabeza y un asignador, inserta al principio y libera los nodos uno por uno. 🎯
Aprende Zig con un tutor de IA — gratis
Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.
- Cursos
- 30
- Lecciones
- 120
Preguntas frecuentes
¿La lección «Una lista enlazada simple» es gratis?
Sí — el texto completo de «Una lista enlazada simple» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Zig Academy, actualiza a CoddyKit PRO. El curso de Zig Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Una lista enlazada simple»?
Nodos, propiedad y recorrido. Practicas Zig Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Zig Academy?
No se requiere experiencia previa. Zig Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.
¿Cuánto tiempo toma la lección «Una lista enlazada simple»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Zig Academy?
Sí. Cada lección de Zig Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Una pila genérica desde cero
- Una lista enlazada simple
- Usar HashMap y AutoHashMap
- Perfilado y compromisos de seguridad