Upload
others
View
6
Download
0
Embed Size (px)
Citation preview
BMT207
Veri Yapıları
Günay TEMÜR
Düzce Üniversitesi
Teknoloji Fakültesi
Bilgisayar Mühendisliği
BÖLÜM - 4
İçerik;
• Kuyruk Veri Yapısı Modeli
• Basit Kuyruk (Simple Queue)
• Döngüsel Kuyruk
3
•Kuyruk, eleman eklemelerin sondan (rear) ve eleman
çıkarmaların bastan (front) yapıldığı,
•(First In First Out-İlk Gelen İlk Çıkar – FIFO) olarak
modellenen, doğrusal bir veri yapısı modelidir.
•Bir elemanın kuyruğa girmesi insert (enqueue) işlemi iken
listeden silinmesi remove (dequeue) işlemidir.
•Insert’ler kuyruğun arkasından yapılırken, remove’lar
kuyruğun önünden yapılırlar.
•Boş bir kuyruktan eleman silmeye çalışmak underflow
hatası üretirken,
•dolu bir kuyruğa eleman eklemeye çalışmak overflow
hatası üretir.
Kuyruk Giriş
4
Kuyruk
5
Kuyruk
6
Kuyruk
7
Kuyruk & Stack
Queue Çalışma Mantığı
Queue dizi implementasyonu için kurallar
• Implementasyonda front ve rear olmak üzere 2 tane
değişken tanımlanır.
o front: kuyruğun önündeki elemanı temsil eder.
front = -1 ise kuyruk boştur.
Kuyruktan her eleman çıkartıldığında (REMOVE)
front bir artar.
o rear: kuyruğun sonundaki elemanı temsil eder.
Kuyruğa her eleman eklendiğinde (INSERT) rear
bir artar.
Queue Çalışma Mantığı (devam…)
0 1 2 3 4 5 6 7 8 9front=-1
rear=-1
front ve rear
• Kuyruğa bir eleman eklenince ne olur?
• Kuyruktan bir eleman çıkartılınca (işi bitince ne olur?)
Queue Çalışma Mantığı (devam…)
0 1 2 3 4 5 6 7 8 9
10
front=-1
rear=0
Queue Çalışma Mantığı (devam…)
0 1 2 3 4 5 6 7 8 9
10 20
front=-1
rear=1
Queue Çalışma Mantığı (devam…)
0 1 2 3 4 5 6 7 8 9
10 20 30
front=-1
rear=2
Queue Çalışma Mantığı (devam…)
0 1 2 3 4 5 6 7 8 9
10 20 30 40
front=-1
rear=3
Queue Çalışma Mantığı (devam…)
0 1 2 3 4 5 6 7 8 9
10 20 30 40 50
front=-1
rear=4
Queue Çalışma Mantığı (devam…)
0 1 2 3 4 5 6 7 8 9
10 20 30 40 50
front=0
rear=4
X
Queue Çalışma Mantığı (devam…)
0 1 2 3 4 5 6 7 8 9
10 20 30 40 50
front=1
rear=4
X X
Queue Çalışma Mantığı (devam…)
0 1 2 3 4 5 6 7 8 9
10 20 30 40 50
front=2
rear=4
X X X
• Simple Queue (basit kuyruk) olarak
adlandırılan bu kuyruk tipio hep ileri yönde hareket etmekte ve
o verimsiz alan kullanımına neden
olmaktadır.
Simple Queue
Basit kuyruk gerçekleştiriminde çeşitli iyileştirmeler
yapılabilir:
İyileştirme 1: Silme sonucunda kuyrukta hiç eleman
kalmazsa, kuyruk sıfırdan oluşturulmuş gibi ilk durumuna
getirilebilir.
İyileştirme 2: Kaydırma (shift) işlemi yapılarak öndeki boş
yerler kullanıma sokulmak üzere arkaya taşınabilir, fakat
kaydırmalar aşırı zaman alır ve maliyetlidir.
İyileştirme 3: Diğer iyileştirme kuyruğun boşta kalan öndeki
alanlarını kullanmaya yönelik bir geliştirme yapılabilir
(Circular - Döngüsel Kuyruk).
Simple Queue İyileştirmeleri
• Basit kuyrukta karşılaşılan ve kuyruğun başında
kalan kullanılamayan alan problemini çözmek için
döngüsel kuyruk veri yapısı modeli geliştirilmiştir.
Circular Queue
0 1 2 3 4 5 6 7 8 9
10 20 30 40 50 60 70 80 90 100
front=2
rear=9
X X X
Aslında «array» de boş alanlar var
Circular Queue
• Bu sebeple; Önde boş olan indisler,
arkadaymış gibi otomatik olarak kullanıma
sokulur.
0 1 2 3 4 5 6 7
10 20 30 40 50 60 70 80
front=3
rear=7
X X X
7 6
5
4
32
1
0
X
Circular Queue
• Öndeki boş olan indislere, ekleme işlemi
«array» dolana kadar devam edilir.
0 1 2 3 4 5 6 7
90 20 30 40 50 60 70 80
front=3
rear=0
X X X
Circular Queue
• Ya! «array» de dolarsa ?
Queue Liste Implemantasyonu
null
cnt
*front
*rear
null
struct {int cnt;node *front;node *rear;
};
enqueue()
Queue Liste Implemantasyonu
5 next
root
null
cnt
*front
*rear
enqueue()
Queue Liste Implemantasyonu
5 next
root
null
cnt
*front
*rear
10 next
enqueue()
Queue Liste Implemantasyonu
5 next
root
null
cnt
*front
*rear
10 next 15 next
enqueue()
Queue Liste Implemantasyonu
5 next
root null
cnt
*front
*rear
10 next 15 next
dequeue()
nullyrd
Queue Liste Implemantasyonu
root null
cnt
*front
*rear
10 next
15 next
dequeue()
nullyrd
Queue Liste Implemantasyonu
rootnull
cnt
*front
*rear
15 next
dequeue()
nullyrd
BİTTİ
Yararlanılan Kaynaklar
• Ders Kitabı:
• Veri Yapıları Rifat ÇÖLKESEN
• Data Structures Using C, Reema Thareja
• Yardımcı Okumalar:
• Celal Bayar Üniversitesi, Yrd. Doç. Dr. Deniz KILINÇ
hocanın sunumları.