🔗 4.1: Bağlı Liste (Linked List) Nedir?

Dinamik Veri Yapısının Temeli

🤔 Bağlı Liste Nedir?

Bağlı Liste (Linked List), her elemanın (node) bir sonraki elemana işaretçi (pointer) ile bağlandığı dinamik veri yapısıdır. Dizilerden farklı olarak, elemanlar hafızada ardışık olmak zorunda değildir.

🎮 İnteraktif Bağlı Liste

🧱 Node (Düğüm) Yapısı

Her node iki bölümden oluşur:

DATA
42
NEXT
# Python'da Node Sınıfı
class Node:
    def __init__(self, data):
        self.data = data    # Veri
        self.next = None    # Sonraki node'a işaretçi

📊 Dizi vs Bağlı Liste: Hafıza Yapısı

📦 Dizi (Array)

Bitişik (Contiguous) Hafıza

10
20
30
40
50

✅ Hızlı erişim (index ile)
❌ Ekleme/silme yavaş (kaydırma gerekir)
❌ Boyut değiştirmek zor

🔗 Bağlı Liste

Dağınık (Non-contiguous) Hafıza

-
10
-
-
30
-
20
-
40
-

✅ Ekleme/silme hızlı (O(1))
✅ Dinamik boyut
❌ Erişim yavaş (baştan dolaşmak gerekir)

🎯 Ne Zaman Bağlı Liste Kullanmalı?

Durum Dizi Bağlı Liste
Sık erişim (index ile) ✅ İyi ❌ Kötü
Başa/ortaya ekleme ❌ Yavaş ✅ Hızlı
Dinamik boyut ❌ Zor ✅ Kolay
Hafıza verimliliği ✅ Daha az ❌ Pointer overhead

📚 Bağlı Liste Türleri

1️⃣ Tek Yönlü (Singly)

Her node sadece sonrakini gösterir.
A → B → C → null

2️⃣ Çift Yönlü (Doubly)

Her node önceki ve sonrakini gösterir.
null ← A ⟷ B ⟷ C → null

3️⃣ Dairesel (Circular)

Son node başa bağlıdır.
A → B → C → A (döngü)

🌍 Gerçek Hayat Örnekleri

💻 Bilgisayar Bilimlerinde Linked List

💡 Neden Dizi Yerine Linked List?

Dizi: Ortadan eleman silince tüm elemanlar kayar → O(n)

Linked List: Sadece pointer'ları değiştirirsin → O(1)

Sık ekleme/silme yapılan yerlerde linked list avantajlıdır!