Veri yapıları, yazılım geliştirmenin temel taşlarından biridir. Özellikle dinamik veri yönetimi söz konusu olduğunda bağlı liste (linked list) veri yapısı önemli bir rol oynar. Bu yazıda bağlı listenin ne olduğunu, nasıl çalıştığını, türlerini, avantaj ve dezavantajlarını sade bir dille inceleyeceğiz.
1. Bağlı Liste Nedir?
Bağlı liste, elemanların bellekte ardışık (contiguous) olarak değil, birbirlerine referanslar (pointer) aracılığıyla bağlandığı doğrusal (linear) bir veri yapısıdır.
Bir bağlı listede her eleman şu iki temel bileşenden oluşur:
-
Veri (data)
-
Sonraki düğümün adresi (next pointer)
Bu yapıya sahip her elemana düğüm (node) denir.

2. Bağlı Listenin Temel Mantığı
Bir bağlı listede ilk düğümün referansı genellikle head adı verilen bir değişkende tutulur. Her düğüm, kendisinden sonra gelen düğümün adresini gösterir. Son düğüm ise null değerini göstererek listenin bittiğini belirtir.
Örnek yapı:

Burada:
-
10,20,30veri alanlarıdır. -
•işareti bir sonraki düğüme işaret eden referansı temsil eder.
3. Bağlı Liste Türleri
3.1. Tek Yönlü Bağlı Liste (Singly Linked List)
Her düğüm yalnızca bir sonraki düğümü gösterir. En basit bağlı liste türüdür.
Özellikleri:
-
Tek yönlü ilerleme
-
Geriye doğru gezinme yok

3.2. Çift Yönlü Bağlı Liste (Doubly Linked List)
Her düğüm hem bir sonraki hem de bir önceki düğümü gösterir.
Yani düğüm yapısı şu şekildedir:
-
Veri
-
Next pointer
-
Previous pointer
Avantajı:
-
Hem ileri hem geri gezinme imkanı
Dezavantajı:
-
Daha fazla bellek kullanımı
3.3. Dairesel Bağlı Liste (Circular Linked List)
Son düğüm null yerine tekrar ilk düğümü gösterir. Böylece yapı döngüsel hale gelir.
4. Bağlı Liste ile Dizi (Array) Karşılaştırması
| Özellik | Dizi (Array) | Bağlı Liste |
|---|---|---|
| Bellek Yapısı | Ardışık | Dağınık |
| Erişim Süresi | O(1) | O(n) |
| Araya Eleman Ekleme | Maliyetli | Kolay |
| Bellek Kullanımı | Sabit | Dinamik |
Kritik Fark
-
Dizilerde bir elemana indeks ile doğrudan erişebiliriz.
-
Bağlı listede bir elemana ulaşmak için baştan itibaren ilerlemek gerekir.
5. Temel İşlemler ve Zaman Karmaşıklıkları
5.1. Başa Ekleme
-
Zaman Karmaşıklığı: O(1)
-
Yeni düğüm oluşturulur ve head güncellenir.
5.2. Sona Ekleme
-
Zaman Karmaşıklığı: O(n)
(Eğer tail tutulmuyorsa)
5.3. Araya Ekleme
-
Önce ilgili konuma kadar gidilir: O(n)
5.4. Silme
-
Silinecek düğüm bulunur ve referans bağlantısı değiştirilir: O(n)
6. Avantajları
- Dinamik boyut
- Bellekte esnek yerleşim
- Araya ekleme ve silme işlemleri kolay
- Stack ve Queue implementasyonlarında sık kullanılır
7. Dezavantajları
- Rastgele erişim yok (Random access yok)
- Ekstra pointer alanı nedeniyle daha fazla bellek kullanımı
- Cache performansı dizilere göre daha zayıf
8. Bağlı Liste Ne Zaman Kullanılır?
-
Veri boyutu önceden bilinmiyorsa
-
Sık ekleme / silme işlemi varsa
-
Bellek esnekliği gerekiyorsa
-
Queue, Stack gibi yapılar geliştiriliyorsa
Özellikle düşük seviyeli sistem programlamasında ve veri yapılarının temelini anlamak için oldukça önemlidir.
9. Özet
Bağlı liste, dinamik ve esnek bir veri yapısıdır. Dizilere göre erişim süresi dezavantajlı olsa da, ekleme ve silme işlemlerindeki avantajı nedeniyle birçok senaryoda tercih edilir.
Veri yapılarının temellerini iyi anlamak, algoritma performansını doğrudan etkiler. Bu nedenle bağlı liste, yazılım geliştiricilerin mutlaka hakim olması gereken konulardan biridir.