Queue - Kuyruk Yapısı

Selam millet

Veri yapılarının konu başlığı olan kuyruk (queue) yapısını sizlere anlatmaya çalışacağım. Öncelikle gündelik hayattan örneklerle olayı somutlaştıralım. Hepimiz bankada sıra beklemişizdir herhalde :). İşlem yapmak için önce sıra alırız ve sıramız geldiğinde işlemimiz gerçekleşir. Yani ilk gelenin işlemi ilk yapılır ve sırasıyla bu işlem devam eder. Bu olayın literatürdeki karşılığı ise FIFO (first in first out) olarak adlandırılmıştır.

İşin programlama kısmına geri dönelim. C++’da class yardımı ile de yapabilirdik fakat ben structure kullanmayı tercih ettim.

Kuyruk adında bir struct oluşturduk ve bu kuyruk ile alakalı değişkenlerimizi belirledik. Bu yapının elemanlarını veri adında bir dizi değişkeninde tutacağız. Aslında bütün olay bu dizi değişkenin içinde gidip gelmek. Gidip gelmek için kuyruk başını ve sonunu bilmemiz gerek bu yüzden bas ve son değişkenlerimizi de belirtiyoruz.

Şimdi ise kuyruğa eleman ekleme kısmına göz atalım. VeriEkle() fonksiyonun ihtiyaç duyduğu iki değişken var. Bunlardan birisi hangi kuyruğa etkiyeceği, ikincisi ise eklenecek veri değişkenidir. Sonrasında kuyruğa eleman eklemek için öncelikle kuyruk dolu mu diye kontrol etmemiz gerekecek. Bu kontrolü bos_mu() adında bir fonksiyonla kontrol edebiliriz. Döndürdüğü değere göre veri ekleme işlemimiz gerçekleşir. True döndürdüğünü varsayarsak veriyi kuyruk sonuna ekledi ve kuyruk sonunu bir arttırdı. Bunun nedeni ise bu işlemi tekrardan yapmaya kalktığımızda aynı indisin üzerine yazmasını önlemek olarak açıklayabiliriz.

Birde veri çıkarma fonksiyonumuza göz atalım.

Sırasıyla 1,9,0,7 rakamlarını girdiğimizi varsayalım.

Çıkarma işlemini 0. İndisten yapacağı için 1 numaralı veri silinmiş olacak ve yeni kuyruk başımız artık 9 rakamının bulunduğu kısım olacak.

Burada bir if kontrolüyle kuyruğun boş olup olmadığını kontrol ediyoruz. Daha sonra else bloğunun içinde kuyruk başının verisini NULL yapıyoruz. Ve son olarak boş kalan kuyruk başını doldurmak için her indisi bir sıra kayrıdırıyoruz.

Main fonksiyonumuzun içeriğide aşağıdaki gibi.

Çıktımız :

 

Tarih:
Hit: 86889
Yazar: CnkGn



Yorumlar


Yorum yapabilmek için üye girişi yapmalısınız.

Yorumlar

OFree tarafından yazıldı. Tarih: 06/Haz/15 19:05
eline sağlık kardeşim....