KUYRUKLAR (QUEUES)
1. KUYRUKLAR: Kuyruk yapıları insanların yabancı olmadıkları ve insanlara uzak olmayan bir yapıdır. Günlük yaşamda bu yapı ile sık sık karşılaşırız[1]. Kuyruğun uçlarına verilen isimler bekleme sırasının hareket yönüne göre belirlenir. Elemanların çıkarıldığı uca kuyruk başı (head), eklendiği uca ise kuyruk sonu (tail) adı verilir[2].
1. KUYRUKLAR: Kuyruk ve yığın modelleriyle, program tasarımında birçok yerde karşılaşılır[3]. Ekle KUYRUK İlk Giren İlk Çıkar (FIFO) Çıkar Şekil 1.1. Kuyruğun Yapısı
Kuyruk Çeşitleri: Doğrusal kuyruk yapısı Dairesel kuyruk yapısı Öncelikli kuyruk yapısı Şekil 1.2. İlkel Kuyruk Modeli[5]
1.1. Doğrusal Kuyruk Yapısı: Doğrusal kuyruk bir doğrusal listedir. Örneğin doğrusal bir kuyruk yapısı şekilde görülmektedir. Kuyruğun bir başı bir de sonu vardır. Kuyruğa eleman ekleme işlemi kuyruk sonundan (Ks) eleman çıkarma işlemi de kuyruk başından (Kb) yapılmaktadır[1]. Şekil 1.1.1 Doğrusal Kuyruk Modeli[4]
1.1. Doğrusal Kuyruk Yapısı: Şekil 1.1.2. Kuyruk Örneği[4]
1.1.1. Doğrusal Kuyruğa Eleman Ekleme: Algoritma Doğrusal Kuyruğa Eleman Ekle (K,Kb,Ks,n,İş) [Taşma kontrolü] İf Ks>= n then begin //kuyruk dolumu kontrol et// Yaz(‘Kuyruk Dolu’) Geridön End; [Elemanı kuyruğa ekle] Ks = Ks+1 K(Ks) = İş [‘Kb’ işaretçisinin değerini kontrol et] İf Kb=0 then Kb = 1 [İşlemi bitir] Dur[1].
1.1.2. Doğrusal Kuyruktan Eleman Çıkarma: Algoritma Doğrusal kuyruktan eleman çıkarma (K, iş, Kb, Ks) [Kuyrukta “iş” var mı?] //Kuyrukta “iş” var mı kontrol et yoksa geridön.// İf Kb=0 then begin Yaz(“Kuyruk boş”); Geridön End; [Kuyruktan “iş” çıkar] //Kb’nin gösterdiği elemanı kuyruktan çıkar.// İş = K(Kb) [Eleman gönder] Geridön(iş) [İşlemi Bitir] Dur[1].
Doğrusal Kuyruk Örneği; A B A B C B C C C D C D E
1.2. Dairesel Kuyruk Yapısı: Dairesel kuyruk yapısı ile bellek daha etkin kullanılır. Dairesel kuyruk yapısında elemanlar bir dizide olduğu gibi art arda gelmekteler ve kuyruğun en son elemanı kuyruğun birinci elemanını işaret etmektedir[1]. Şekil 1.2.1 Dairesel Kuyruk Modeli[6]
1.3. Öncelikli Kuyruklar: Öncelikli kuyruk uygulamasında kuyruğa girecek verilerin veya nesnelerin birer öncelik değeri vardır ve ekleme bu öncelik değerine bakılarak yapılır. Eğer eklenecek verinin önceliği en küçük ise, yani en önceliksiz ise, doğrudan kuyruğun sonuna eklenir; diğer durumlarda kuyruk üzerinde arama yapılarak kendi önceliği içerisinde sona eklenir[3].
1.3. Öncelikli Kuyruklar: Öncelikli Kuyruklar Animasyon[6]
KAYNAKLAR: 1. KURNAZ S., "Temel Veri Yapıları ve Algoritmalar", Papatya Yayıncılık, İstanbul, 2004. 2. ÇÖLKESEN R., "Veri Yapıları ve Algoritmalar", Papatya Yayıncılık, İstanbul. 3. YARMAN-VURAL F. T., "Bilgisayar Sistemleri", Akademi Yayıncılık, ANKARA, 2000. 4. http://www.javaworld.com/javaworld/jw-06-2003/jw-0613-java101.html?page=6 jw-0613-java10112.gif 10/04/2007 5.http://images.google.com.tr/images?q=Queue&gbv=2&ndsp=20&svnum=10&hl=tr&start=0&sa=N 10/04/2007 6. http://www.imaginethatinc.com/images/v6_features/queue.gif 10/04/2007 7. http://www.cs.jhu.edu/~goodrich/dsa/03stacks/Demo/ (Video) 07/04/2007 8. http://www.concentric.net/~ttwang/java/QueueDemo.html (Video) 07/04/2007 9.http://maven.smith.edu/~streinu/Teaching/Courses/112/Applets/Queue/myApplet.html (Video) 07/04/2007
www.ogrenciyiz.net www.ogrenciyiz.net