0Pricing
Zig Academy · Pelajaran

Linked List Tunggal

Node, kepemilikan, dan penelusuran.

Linked List Tunggal adalah pelajaran Zig Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Zig Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Zig Academy mencakup 4 pelajaran total.

Apa Itu Linked List

Linked list tunggal menghubungkan nilai-nilai: setiap node menyimpan nilai dan penunjuk ke node berikutnya, atau null pada bagian akhir. 🔗

Definisikan Node

Node adalah struct dengan sebuah nilai dan penunjuk opsional ke node berikutnya. Opsional berarti node terakhir menunjuk ke null.

const Node = struct {
    value: i32,
    next: ?*Node,
};

Mengapa Penunjuknya Opsional

Penggunaan ?*Node memungkinkan rantai berakhir dengan aman. Anda tidak memerlukan nilai sentinel khusus untuk menandai bagian akhir.

next: ?*Node

List Melacak Head

List itu sendiri hanya mengingat node pertama, yang disebut head, serta alokator yang memiliki semua node.

const List = struct {
    head: ?*Node,
    alloc: std.mem.Allocator,
};

Alokasikan Satu Node

Untuk menambahkan nilai, minta alokator melakukan create satu Node di heap. Ini mengembalikan penunjuk ke penyimpanan baru.

const node = try self.alloc.create(Node);

Push ke Bagian Depan

Penyisipan paling murah dilakukan di head: arahkan node baru ke head lama, lalu jadikan node tersebut head baru. Operasi ini membutuhkan waktu konstan.

node.* = .{ .value = v, .next = self.head };
self.head = node;

Telusuri Rantai

Untuk melakukan penelusuran, mulai dari head dan ikuti setiap penunjuk next hingga mencapai null. Perulangan while merepresentasikan node dengan baik.

var cur = self.head;
while (cur) |n| {
    std.debug.print("{d}\n", .{n.value});
    cur = n.next;
}

Capture Membuka Nilai Opsional

Penulisan while (cur) |n| menjalankan isi perulangan hanya selama cur tidak bernilai null, dan n adalah penunjuk yang sudah dibuka. Perulangan berakhir saat mencapai null.

while (cur) |n| { ... }

Anda Memiliki Setiap Node

Setiap node berasal dari alokator, sehingga setiap node harus dikembalikan. Melupakan satu saja merupakan kebocoran yang akan dilaporkan oleh alokator pengujian.

Bebaskan Seluruh List

Telusuri rantai di dalam deinit, tetapi ambil next sebelum membebaskan node, karena node tersebut sudah tidak ada saat Anda menghancurkannya.

var cur = self.head;
while (cur) |n| {
    const nxt = n.next;
    self.alloc.destroy(n);
    cur = nxt;
}

Buat Menjadi Generik

Bungkus Node dan List dalam fungsi yang mengembalikan jenis agar list berfungsi untuk jenis elemen apa pun, bukan hanya i32.

fn LinkedList(comptime T: type) type {
    return struct {
        const Node = struct { value: T, next: ?*Node };
    };
}

Pemeriksaan Singkat

Anda sedang membebaskan node linked list satu per satu. Apa yang harus dilakukan sebelum menghancurkan setiap node?

Rangkuman

Node menyimpan nilai dan penunjuk next opsional. List melacak head dan alokator, melakukan push ke bagian depan, lalu membebaskan node satu per satu. 🎯

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Linked List Tunggal” gratis?

Ya — teks lengkap “Linked List Tunggal” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Zig Academy, upgrade ke CoddyKit PRO. Kursus Zig Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Linked List Tunggal”?

Node, kepemilikan, dan penelusuran. Kamu berlatih Zig Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Zig Academy?

Tidak diperlukan pengalaman sebelumnya. Zig Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.

Berapa lama pelajaran “Linked List Tunggal” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Zig Academy ini?

Ya. Setiap pelajaran Zig Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Stack Generik dari Nol
  2. Linked List Tunggal
  3. Menggunakan HashMap dan AutoHashMap
  4. Pembuatan Profil dan Pertukaran Keamanan
← Kembali ke Zig Academy