Uma lista simplesmente encadeada
Nós, propriedade e travessia.
Uma lista simplesmente encadeada é uma aula grátis de Zig Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Zig Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Zig Academy inclui 4 aulas no total.
O que é uma lista encadeada
Uma lista simplesmente encadeada conecta valores: cada nó contém um valor e um ponteiro para o próximo nó, ou null no final. 🔗
Defina o Node
Um nó é uma struct com um valor e um ponteiro opcional para o próximo nó. Opcional significa que o último nó aponta para null.
const Node = struct {
value: i32,
next: ?*Node,
};Por que o ponteiro é opcional
Usar ?*Node permite que a cadeia termine com segurança. Não é necessário um valor sentinela especial para marcar o final.
next: ?*NodeA lista acompanha o início
A lista em si apenas guarda o primeiro nó, chamado de início, além do alocador que possui todos os nós.
const List = struct {
head: ?*Node,
alloc: std.mem.Allocator,
};Alocar um nó
Para adicionar um valor, peça ao alocador para create um único Node no heap. Isso retorna um ponteiro para um espaço de armazenamento novo.
const node = try self.alloc.create(Node);Adicione ao início
A inserção mais barata ocorre no início: aponte o novo nó para o início antigo e transforme-o no novo início. Isso leva tempo constante.
node.* = .{ .value = v, .next = self.head };
self.head = node;Percorra a cadeia
Para percorrer a lista, comece em head e siga cada ponteiro next até chegar a null. Um laço while representa bem esse percurso.
var cur = self.head;
while (cur) |n| {
std.debug.print("{d}\n", .{n.value});
cur = n.next;
}A captura desembrulha o opcional
Escrever while (cur) |n| executa o corpo somente enquanto cur não for nulo, e n é o ponteiro desembrulhado. O laço termina em null.
while (cur) |n| { ... }Você possui todos os nós
Cada nó veio do alocador, então cada um precisa ser devolvido. Esquecer até mesmo um deles é um vazamento que o alocador de testes informará.
Libere a lista inteira
Percorra a cadeia em deinit, mas capture next antes de liberar, pois o nó desaparece no momento em que você o destrói.
var cur = self.head;
while (cur) |n| {
const nxt = n.next;
self.alloc.destroy(n);
cur = nxt;
}Torne-a genérica
Envolva Node e List em uma função que retorna um tipo, para que a lista funcione com qualquer tipo de elemento, não apenas i32.
fn LinkedList(comptime T: type) type {
return struct {
const Node = struct { value: T, next: ?*Node };
};
}Verificação rápida
Você está liberando uma lista encadeada nó por nó. O que precisa fazer antes de destruir cada nó?
Recapitulação
Os nós contêm um valor e um ponteiro next opcional. A lista acompanha o início e um alocador, adiciona elementos ao início e libera os nós um por um. 🎯
Aprenda Zig com um tutor de IA — grátis
Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.
- Cursos
- 30
- Aulas
- 120
Perguntas Frequentes
A aula “Uma lista simplesmente encadeada” é grátis?
Sim — o texto completo de “Uma lista simplesmente encadeada” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Zig Academy, atualize para CoddyKit PRO. O curso de Zig Academy inclui 4 aulas no total.
O que vou aprender em “Uma lista simplesmente encadeada”?
Nós, propriedade e travessia. Você pratica Zig Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Zig Academy?
Nenhuma experiência prévia é necessária. Zig Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.
Quanto tempo leva a aula “Uma lista simplesmente encadeada”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Zig Academy?
Sim. Cada aula de Zig Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Uma pilha genérica do zero
- Uma lista simplesmente encadeada
- Usando HashMap e AutoHashMap
- Perfil de desempenho e compromissos de segurança