İkili Yığınlar Nedir?
İkili yığınlar (Double-ended stacks veya Deques), hem yığın (stack) hem de kuyruk (queue) özelliklerini taşıyan bir veri yapısıdır. Bu veri yapısı, elemanların hem baştan hem de sondan eklenip çıkarılmasına olanak tanır.
İkili yığınlar, elemanların her iki ucundan da erişilebilen ve değiştirilebilen bir veri yapısıdır. Bu sayede, veriye hem yığın hem de kuyruk mantığıyla müdahale edilebilir.
Adım adım çözümlü örnekler
Bir ikili yığına eleman ekleme ve çıkarma örneği:
Başlangıçta boş bir ikili yığın oluşturulur.Baştan 'A' eklenir: [A]Sondan 'B' eklenir: [A, B]Baştan 'C' eklenir: [C, A, B]Sondan çıkarılan eleman 'B' olur: [C, A]Baştan çıkarılan eleman 'C' olur: [A]
İkili yığınların kullanım alanları nelerdir?
Tarayıcı geçmişi (geri ve ileri tuşları)Geri alma/yineleme işlemleriGraf algoritmaları (örneğin, BFS'de çift yönlü keşif)Dinamik bellek ayırma
Bilgi kartları
Mini test
S1.Aşağıdakilerden hangisi ikili yığınların bir özelliği DEĞİLDİR?
S2.İkili yığınlar hangi veri yapılarının özelliklerini birleştirir?
S3.Bir web tarayıcısında 'geri' tuşunun işlevi hangi veri yapısına benzer?
Sık yapılan hatalar
İkili yığınlar yalnızca yığın gibi çalışır. — Doğrusu: İkili yığınlar hem yığın hem de kuyruk gibi çalışabilir, elemanlar her iki uçtan da erişilebilir.
İkili yığınlarda elemanlar sadece sondan çıkarılabilir. — Doğrusu: İkili yığınlarda elemanlar hem baştan hem de sondan çıkarılabilir.
Sıkça sorulan sorular
İkili yığınlar ve bağlı listeler arasındaki fark nedir?
Bağlı listeler daha genel bir veri yapısıdır ve elemanlara erişim genellikle baştan başlar. İkili yığınlar ise bağlı liste üzerine kurulabilir ancak belirli operasyonları (hem baştan hem sondan ekleme/çıkarma) daha verimli hale getiren özel bir arayüz sunar.
İkili yığınların performans özellikleri nelerdir?
Çoğu ikili yığın implementasyonunda (örneğin, dinamik dizi veya çift bağlı liste tabanlı olanlarda), baştan ve sondan ekleme/çıkarma işlemleri genellikle O(1) zaman karmaşıklığına sahiptir. Ancak, ortadan ekleme/çıkarma işlemleri daha maliyetli olabilir (genellikle O(n)).
Hangi programlama dillerinde ikili yığınlar bulunur?
Birçok modern programlama dilinde standart kütüphanelerde ikili yığınlar bulunur. Örneğin, C++'da `std::deque`, Python'da `collections.deque`, Java'da `ArrayDeque` gibi sınıflar mevcuttur.