CodeBlanks Logo Icon CodeBlanks

Bağlı liste

  • C kursu
  • Orta seviye
  • Ders 70/116
  • 5 dk

struct ile bağlı liste oluşturmayı öğrenirsin.

Bağlı liste

Bir bağlı liste, her düğümün bir sonraki düğümü işaret ettiği bir veri yapısıdır. Dizilerin aksine, boyutu önceden belirlenmez; düğüm ekledikçe büyür.

Her düğüm iki parçadan oluşur: data (taşınan değer) ve next (sonraki düğümün adresi). C'de bunu bir struct ile tanımlarız: typedef struct Node { int data; struct Node *next; } Node;. typedef sayesinde struct Node yerine kısa Node yazabilirsin. Listenin sonunda next alanı NULL olur; bu, listenin bittiğini gösterir.

Düğüm oluşturma

Yeni bir düğüm malloc ile yığın bellekten ayrılır. Node *n = malloc(sizeof(Node)); çağrısı, bir Node büyüklüğünde bellek ayırır ve adresini n'ye verir.

Ayrılan düğümün alanları n->data = 42; ve n->next = NULL; biçiminde doldurulur. -> işleci, işaretçinin gösterdiği struct'ın alanına erişir. Listenin tek başına bir düğüm olduğu durumda next yine NULL olur. İş bitince free(n); ile bellek iade edilir; aksi halde sızıntı oluşur. malloc ve free için <stdlib.h> başlık dosyasını eklemelisin.

Uygulama Tek düğümlü liste

typedef struct Node { int data; struct Node *next; } Node; tanımını yaz. main'de Node *n = malloc(sizeof(Node)); ile bir düğüm ayır. n->data = 42; ve n->next = NULL; ata. printf("%d\n", n->data); ile yazdır. Son olarak free(n); çağır.

Başlangıç kodu

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

// Node struct'ını tanımla: int data, struct Node *next
// main: bir node oluştur, data = 42, yazdır, free ile iade et

int main(void) {
    // buraya yaz
    return 0;
}

Örnek çözüm

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

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

int main(void) {
    Node *n = malloc(sizeof(Node));
    n->data = 42;
    n->next = NULL;
    printf("%d\n", n->data);
    free(n);
    return 0;
}

Beklenen çıktı

42

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Bir Node struct'ında sonraki düğümü hangi alan tutar?

  • data
  • prev
  • next Doğru cevap
  • size

Açıklama: next alanı bir sonraki Node'un adresini taşır.

2 Node için bellek ayır

Soru
Node *n = malloc(sizeof(____));
Cevap
Node *n = malloc(sizeof(Node));

Açıklama: sizeof(Node) bir Node'un bayt büyüklüğünü verir.

3 Düğüm parçaları

Kavram Anlamı
data taşınan değer
next sonraki düğüm adresi
malloc bellek ayır
free bellek iade et

Orta seviye bölümündeki tüm dersler