1.1. Doğrusal Kuyruk Yapısı

Download Report

Transcript 1.1. Doğrusal Kuyruk Yapısı

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)
Şekil 1.1. Kuyruğun Yapısı
Çıkar
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]
Doğrusal Kuyruk Örneği;
A
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-0613java101.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/myA
pplet.html (Video) 07/04/2007
www.ogrenciyiz.net

www.ogrenciyiz.net