Yığın ve Kuyruk Veri Yapılarına Giriş: Temel Bilgiler ve Uygulamalar
Algoritma ve Veri Yapıları
Yığın ve Kuyruk Veri Yapılarına Giriş: Temel Bilgiler ve Uygulamalar

Yığın ve Kuyruk Veri Yapılarına Giriş
Bilgisayar bilimlerinde veri yapıları, verilerin düzenli ve etkili bir biçimde saklanması, erişilmesi ve yönetilmesi için kullanılan temel araçlardır. Bu yapılar, algoritmaların performansını doğrudan etkiler ve programlamada önemli bir yer tutar. Özellikle yığın ve kuyruk gibi veri yapıları, farklı senaryolarda sıkça tercih edilen yapılar arasında bulunur. Bu yazıda, temel bilgiler ışığında yığın ve kuyruk veri yapılarını detaylı olarak inceleyeceğiz.
Yığın (Stack) Nedir?
Yığın, Last-In-First-Out (LIFO) yani "Son Giren İlk Çıkar" prensibine göre çalışan bir veri yapısıdır. Bu yapıda, en son eklenen eleman ilk olarak çıkarılır. Yığın, genellikle fonksiyon çağrılarında, geri alma işlemlerinde ve dil işleme algoritmalarında kullanılır.
Yığının temel işlemleri şunlardır:
- Push: Yığına yeni bir eleman ekleme işlemi.
- Pop: Yığından en üstteki elemanı çıkarma işlemi.
- Peek (veya Top): Yığının en üstündeki elemanı görüntüleme işlemi, elemanı çıkarmadan.
- IsEmpty: Yığının boş olup olmadığını kontrol etme.
Yığının programlamadaki uygulanışı genellikle diziler veya bağlı listeler ile yapılır. Örneğin, C++ veya Java gibi dillerde yığınlar, standart kütüphanelerde hazır olarak bulunur ancak kendi yığın yapınızı oluşturmak da öğrenme açısından önemlidir.
Kuyruk (Queue) Nedir?
Kuyruk, First-In-First-Out (FIFO) yani "İlk Giren İlk Çıkar" prensibine göre çalışan bir veri yapısıdır. Bu yapıda, en önce eklenen eleman ilk olarak çıkarılır. Kuyruklar, işlem sırasının önemli olduğu yerlerde, örneğin işlemci görev yönetimi, yazdırma görevleri ve veri akış kontrolü gibi durumlarda kullanılır.
Kuyruğun temel işlemleri şunlardır:
- Enqueue: Kuyruğa yeni bir eleman ekleme işlemi.
- Dequeue: Kuyruktan en öndeki elemanı çıkarma işlemi.
- Front (veya Peek): Kuyruğun önündeki elemanı görüntüleme işlemi.
- IsEmpty: Kuyruğun boş olup olmadığını kontrol etme.
Programlamada kuyruk yapıları da diziler, bağlı listeler veya halka kuyruk (circular queue) yapıları ile uygulanabilir. Verimli kuyruk uygulamaları için halka kuyruk tercih edilerek bellek kullanımı optimize edilir.
Yığın ve Kuyruk Veri Yapılarının Karşılaştırılması
Her iki yapı da farklı erişim prensiplerine sahiptir ve kullanım alanları buna göre belirlenir:
- Erişim: Yığında sadece en üstteki elemana erişim vardır, kuyruğun ise sadece önündeki elemana erişimi vardır.
- Sıralama: Yığın LIFO prensibiyle çalışırken, kuyruk FIFO prensibine göre çalışır.
- Kullanım Alanları: Yığınlar fonksiyon çağrılarında, geri alma mekanizmalarında, ifade değerlendirmede; kuyruklar ise işlem sıralamalarında, veri iletiminde ve görev planlamada kullanılır.
Yığın ve Kuyruk Veri Yapılarının Programlamadaki Önemi
Yazılım geliştirme sürecinde, algoritmaların verimli çalışması için uygun veri yapılarının seçimi kritik öneme sahiptir. Yığın ve kuyruk yapıları, özellikle algoritma tasarımında sıkça başvurulan yapılar arasında yer alır. Örneğin, derinlik öncelikli arama algoritması (DFS) yığın kullanırken, genişlik öncelikli arama algoritması (BFS) kuyruk kullanır.
Bu veri yapılarının doğru anlaşılması ve uygulanması, programların daha hızlı, daha okunabilir ve daha sürdürülebilir olmasını sağlar. Ayrıca, Yazılım, Kodlama & Öğrenme platformu gibi kaynaklar, temel bilgileri pekiştirmek isteyenler için kapsamlı rehberler sunar.
Yığın ve Kuyruk Uygulamalarından Örnekler
Yığın Örneği: Bir metin editöründe yapılan işlemlerde geri alma (undo) fonksiyonu yığın yapısı kullanır. Her işlem yığına eklenir, geri alma işlemi ise yığından çıkarılarak son işlem geri alınır.
Kuyruk Örneği: Yazıcıya gönderilen belgeler kuyruk yapısında tutulur. İlk gönderilen belge ilk yazdırılır, böylece adil ve düzenli bir işlem sırası sağlanır.
Sonuç
2026 yılında da programlama dünyasında yığın ve kuyruk veri yapıları, temel veri yapıları arasında önemli bir yer tutmaya devam edecektir. Bu yapıları iyi anlamak, yazılım geliştirme ve algoritma tasarımında başarı için kritik bir adımdır. Yazılım, Kodlama & Öğrenme gibi platformlardan yararlanarak, bu yapılar hakkında derinlemesine bilgi edinmek ve pratik yapmak, programlama becerilerinizi geliştirmek için en etkili yollardan biridir.