Veri Yapıları-Kuyruk (Queue)
Queue elementlerin rear olarak adlandırılan listenin bir tarafından eklendiği, front adı verilen diğer taraftan silindiği doğrusal veri yapısıdır. FIFO(first in first out) ilkesini izler yani bir sıraya ilk giren eleman ilk olarak çıkar. Sıralara örnek olarak bir atm önünde bekleyen insanlar örnek olarak gösterilebilir. Sıraya ilk giren müşterinin işi ilk biter ve kuyruktan ayrılır.
Queue bilgisayar programlamada sık sık başvurulan veri yapılarıdır. Örnek olarak işletim sisteminde yapılması gereken işleri bir sıra veri yapısı ile tutarız. Herhangi bir anda yeni bir iş geldiği zaman bu iş sıraya (Queue) girer. Sırası gelen iş yapılır ve sonraki işe geçilir.
.Net Kütüphanesinde Queue Sınıfı
C# veya herhangi bir dilde yazılan yığın veri yapılarında Enqueue(), Dequeue(), Peek(), Clear() fonksiyonları vardır.
Queue sınıfının Enqueue() metodu sıraya yeni bir eleman ekler. Dequeue() metodu en öndeki elemanı sıradan siler. Eğer sıranın tepesindeki elemanı öğrenmek istersek Peek() medotunu kullanmamız gerekir. Bu metod sıranın başındaki nesneyi döndürür ama bu nesneyi sıradan silmez.
Queue içindeki metodların kullanım örnekleri şu şekildedir:
Queue sınıflarında bulunan diğer iki temel fonksiyonlar ise Count özelliği ve Clear() metodudur.Count, sıra nesnesinde bulunan elemanların sayısını geriye döndüren bir özelliktir. Count özelliği eleman sayısını int tipinde döndürür. Eğer sırayı temizlemek istersek Clean() metodu işimizi yarayacaktır. Clean() metodu hiçbir parametre almaz ve hiçbirşey döndürmez. Herhangi bir sıra nesnesinin içinde bir elemanın olup olmadığını anlamak için Contains() metodu kullanılır. Bu metod aranacak nesneyi alır ve geriye true veya false değerlerini döndürür. Aşağıdaki örnekte Contains() ve Clear() metodları ile Count özelliklerini nasıl kullanabileceğimizi görelim:
Avantajları:
- FIFO yapısına göre hizmet verilmesi gereken senaryolarda avantajlıdır.
- Üretici ve tüketici arasındaki problemlerde fayda sağlar.
Dezavantajları:
- Üzerinde arama yapmak zordur. En baştan başlanıp ilerlemek gerekir. Bazı durumlarda son elemente kadar taramak gerekebilir.
- Kuyruğun aralarına eleman eklemek karmaşık bir yapı kurmaya sebep olur.
Kullanım Alanları:
- İşletim sistemlerinde çalışma önceliği kuyruk ile yapılır.
- Ağ yazıcılarında, belgeler öncelikli kuyruk ile çalışır.
Sonuç
Bu yazımda size Queue yapısından bahsettim avantajları olduğu kadar dezavantajlı bir yapı fakat doğru zamanda doğru yerde kullanıldığında baya işe yarayacak bir yapı.
Anlamakta zorlandığınız noktada bana buradan ulaşabilirsiniz.
GitHub üzerinden örnekleri incelemek için buradan repoya ulaşabilirsiniz.
Teşekkürler.