# Dizi vs Bağlı Liste

Adres: https://softwaredictionary.org/tr/karsilastirma/array-vs-linked-list
Son güncelleme: 2026-09-30

Kısaca: Dizi elemanları bellekte yan yana tutar, her elemana indeksiyle anında ulaşılır; bağlı liste ise düğümleri işaretçilerle bağlar: ekleme ucuz, arama yavaştır.

## Dizi ile bağlı liste arasındaki fark nedir?

Dizi, elemanları sıralı biçimde tutan bitişik bir bellek bloğudur; bu yüzden `i` numaralı elemanın yeri doğrudan hesaplanabilir. Bağlı liste ise düğümlerden oluşan bir zincirdir; her düğüm bir değer ile bir sonraki düğüme bir işaretçi (referans) tutar, çift bağlı listede ayrıca bir öncekine de.

Fark bellek düzeninden gelir. Dizi elemanları yan yana durduğu için `arr[500]` okumak sabit zaman, O(1), alır; ama başa eleman eklemek diğer tüm elemanları kaydırmak demektir, O(n). Bağlı liste, komşusuna bir referans tuttuğunuzda bir düğümü O(1)'de ekleyip çıkarabilir; ama 500. elemana ulaşmak, ondan önceki 499'u tek tek gezmek demektir.

Çoğu kodda varsayılan olan dizilerdir; JavaScript dizileri, Python listeleri ve Java'nın `ArrayList`'i gibi dinamik diziler dolduklarında daha büyük bir bloğa kopyalanarak kendiliğinden büyür. Bağlı listeler ise genellikle kuyruklar, LRU önbellekleri ve hash tablosu kovaları gibi başka yapıların içinde görünür; oralarda ucuz ekleme ve çıkarma, indeksle erişimden daha önemlidir.

Sık yapılan bir yanlış, bağlı listelerin genel olarak eklemede daha hızlı olduğu düşüncesidir. O(1) ekleme yalnızca doğru düğüme zaten sahipken geçerlidir; onu bulmak O(n)'dir ve dizi elemanları CPU önbellek satırlarını paylaştığı için, çok ekleme yapılan iş yüklerinde bile diziler pratikte çoğu zaman daha hızlıdır.

| Özellik | Dizi | Bağlı Liste |
| --- | --- | --- |
| Bellek düzeni | Tek bir bitişik bellek bloğu | Bellekte herhangi bir yere dağılmış, işaretçilerle bağlı ayrı düğümler |
| İndeksle erişim | O(1): doğrudan istenen konuma atlanır | O(n): liste baştan gezilir |
| Başa ekleme ya da baştan silme | O(n): sonraki her eleman kaydırılmalı | O(1): bir iki işaretçi güncellenir |
| Sona ekleme | Dinamik dizilerde amortize O(1) | Liste bir kuyruk işaretçisi tutuyorsa O(1) |
| Bellek yükü | Düşük: yalnızca elemanlar ve yedek kapasite | Daha yüksek: her düğüm ayrıca bir ya da iki işaretçi tutar |
| Önbellek performansı | Mükemmel: komşular birlikte yüklenir | Zayıf: her düğüm bellekte herhangi bir yerde olabilir |
| En uygun olduğu yer | İndeksle erişim, dolaşma ve günlük listelerin çoğu | Bilinen konumlarda sık ekleme ve çıkarma |

## Dizi şu durumlarda doğru seçim

- Elemanları sık sık indeksle okuyorsunuz.
- Çoğunlukla eleman ekleyip üzerlerinde döngü kuruyorsunuz.
- Bellek verimliliği ve önbellek hızı önemli.

## Bağlı Liste şu durumlarda doğru seçim

- Başa ya da ortaya sürekli eleman ekleyip çıkarıyorsunuz.
- Değiştirdiğiniz düğümlere zaten referansınız var.
- Bir kuyruk, çift uçlu kuyruk (deque) ya da LRU önbelleği kuruyorsunuz.

## Sık sorulan sorular

**Diziler neden genellikle bağlı listelerden daha hızlıdır?**

Dizi elemanları yan yana saklandığı için CPU herhangi bir konumu doğrudan hesaplayabilir ve birkaç komşuyu aynı anda önbelleğine yükleyebilir. Bağlı liste düğümleri dağınıktır; bu yüzden her adım belleğe yapılan yavaş bir yolculuk olabilir.

**Bağlı listeyi ne zaman kullanmalıyım?**

Kuyruklarda, LRU önbelleklerinde ya da geri alma geçmişlerinde olduğu gibi, referansına zaten sahip olduğunuz konumlara sık sık eleman ekleyip çıkardığınızda ve indeksle erişime nadiren ihtiyaç duyduğunuzda.

**JavaScript dizisi bir bağlı liste midir?**

Hayır. JavaScript motorları dizileri dinamik dizi olarak saklar; çok seyrek olanlar için sözlüğe benzer bir düzene geçer. Bu yüzden indeksle erişim hızlıdır.

---

Software Dictionary: https://softwaredictionary.org/tr · https://softwaredictionary.org/tr/llms.txt
