Online C Compiler
Buka di kompiler

Edisi pembelajaran bahasa Indonesia. Kode dan keluarannya tetap seperti aslinya.

Singly linked list dalam C

Buat, telusuri, dan bebaskan node yang dihubungkan oleh pointer.

Buka di kompiler

Singly linked list dalam C
Buat, telusuri, dan bebaskan node yang dihubungkan oleh pointer.

Sebuah node menyimpan nilai dan pointer ke node berikutnya. head menunjuk awal, sedangkan NULL menandai akhir atau list kosong. Berbeda dari array, node tidak harus berada pada alamat yang bersebelahan.

Periksa malloc sebelum menulis. Saat menyisipkan atau menghapus node, pertahankan hubungan ke sisa list dan perbarui head jika node pertama berubah. Pencarian nilai membutuhkan penelusuran dengan waktu O(N).

Untuk membebaskan list, simpan pointer ke node berikutnya sebelum memanggil free pada node saat ini. Uji list kosong, satu node, dan beberapa node. Setelah free, bidang node yang dibebaskan tidak boleh dibaca.

Kode C

#include <stdio.h>
#include <stdlib.h>

typedef struct Node {
    int data;
    struct Node *next;
} Node;

Node* insertHead(Node *head, int val) {
    Node *newNode = (Node *)malloc(sizeof(Node));
    newNode->data = val;
    newNode->next = head;
    return newNode;
}

void printList(Node *head) {
    Node *curr = head;
    while (curr != NULL) {
        printf("%d -> ", curr->data);
        curr = curr->next;
    }
    printf("NULL\n");
}

void freeList(Node *head) {
    Node *curr = head;
    while (curr != NULL) {
        Node *temp = curr;
        curr = curr->next;
        free(temp);
    }
}

int main() {
    Node *head = NULL;
    head = insertHead(head, 30);
    head = insertHead(head, 20);
    head = insertHead(head, 10);

    printf("Linked List: ");
    printList(head);

    freeList(head);
    return 0;
}
Buka di kompiler

Keluaran yang diharapkan

Linked List: 10 -> 20 -> 30 -> NULL

Pertanyaan umum

Mengapa kode dan keluarannya tetap dalam bahasa Inggris?

Kata kunci, pengenal, dan teks yang diperiksa tes dipertahankan agar program tidak berubah. Penjelasan dan kontrol telah diterjemahkan.