BMT207 Veri Yapıları · BMT207 Veri Yapıları Günay TEMÜR Düzce Üniversitesi Teknoloji...
Transcript of BMT207 Veri Yapıları · BMT207 Veri Yapıları Günay TEMÜR Düzce Üniversitesi Teknoloji...
![Page 1: BMT207 Veri Yapıları · BMT207 Veri Yapıları Günay TEMÜR Düzce Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği](https://reader030.fdocument.pub/reader030/viewer/2022040104/5e235a60d00f40614400aa35/html5/thumbnails/1.jpg)
BMT207
Veri Yapıları
Günay TEMÜR
Düzce Üniversitesi
Teknoloji Fakültesi
Bilgisayar Mühendisliği
![Page 2: BMT207 Veri Yapıları · BMT207 Veri Yapıları Günay TEMÜR Düzce Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği](https://reader030.fdocument.pub/reader030/viewer/2022040104/5e235a60d00f40614400aa35/html5/thumbnails/2.jpg)
BÖLÜM - 4
İçerik;
• Stack (Yığın) Veri Yapısı Modeli
• Stack Çalışma Şekli
• Stack Dizi Implementasyon
• Liste Implementasyon
• Stack Uygulamaları
![Page 3: BMT207 Veri Yapıları · BMT207 Veri Yapıları Günay TEMÜR Düzce Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği](https://reader030.fdocument.pub/reader030/viewer/2022040104/5e235a60d00f40614400aa35/html5/thumbnails/3.jpg)
3
• Stack, doğrusal artan bir veri yapısı modeli olup;
• Insert (push) ve Delete (pop) işlemleri,
o Listenin sadece “top” adı verilen hafıza
alanında gerçekleştirilir
o “top”: stack’in en üst hafıza alanıdır.
• Bu nedenle stack;o Son Giren İlk Çıkar
o (Last In First Out - LIFO) mantığı ile
çalışan bir veri yapısı modelidir.
Stack ?
![Page 4: BMT207 Veri Yapıları · BMT207 Veri Yapıları Günay TEMÜR Düzce Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği](https://reader030.fdocument.pub/reader030/viewer/2022040104/5e235a60d00f40614400aa35/html5/thumbnails/4.jpg)
4
Stack ?
İlk Hangi Elemanı
Alırsınız
![Page 5: BMT207 Veri Yapıları · BMT207 Veri Yapıları Günay TEMÜR Düzce Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği](https://reader030.fdocument.pub/reader030/viewer/2022040104/5e235a60d00f40614400aa35/html5/thumbnails/5.jpg)
Stack Çalışma Mantığı
Stack
stack
• Stack olarak tanımlanmış bir hafıza modeliniz olsun.
• İlk aşamada stack hafıza boş.
top=-1
![Page 6: BMT207 Veri Yapıları · BMT207 Veri Yapıları Günay TEMÜR Düzce Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği](https://reader030.fdocument.pub/reader030/viewer/2022040104/5e235a60d00f40614400aa35/html5/thumbnails/6.jpg)
push(10)
• push() fonksiyonu, yığıtın üstüne yeni bir eleman ekler.
10
10
Stack Çalışma Mantığı (devam…)
Stack
top=0
![Page 7: BMT207 Veri Yapıları · BMT207 Veri Yapıları Günay TEMÜR Düzce Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği](https://reader030.fdocument.pub/reader030/viewer/2022040104/5e235a60d00f40614400aa35/html5/thumbnails/7.jpg)
push(20)
• yeni bir eleman daha…
10
20
20
Stack
Stack Çalışma Mantığı (devam…)
top=1
![Page 8: BMT207 Veri Yapıları · BMT207 Veri Yapıları Günay TEMÜR Düzce Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği](https://reader030.fdocument.pub/reader030/viewer/2022040104/5e235a60d00f40614400aa35/html5/thumbnails/8.jpg)
push(30)
10
30
20
30
• yeni bir eleman daha...
Stack
Stack Çalışma Mantığı (devam…)
top=2
![Page 9: BMT207 Veri Yapıları · BMT207 Veri Yapıları Günay TEMÜR Düzce Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği](https://reader030.fdocument.pub/reader030/viewer/2022040104/5e235a60d00f40614400aa35/html5/thumbnails/9.jpg)
push(40)
10
40
20
30
40
• yeni bir eleman daha…
Stack
Stack Çalışma Mantığı (devam…)
top=3
![Page 10: BMT207 Veri Yapıları · BMT207 Veri Yapıları Günay TEMÜR Düzce Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği](https://reader030.fdocument.pub/reader030/viewer/2022040104/5e235a60d00f40614400aa35/html5/thumbnails/10.jpg)
10
50
20
30
40
• yeni bir eleman daha…
Stack
Stack Çalışma Mantığı (devam…)
top=3
HATAtop<kapasite
olmalı
Tamamen dolu
bir stack’a push
işlemi overflow
hatası
![Page 11: BMT207 Veri Yapıları · BMT207 Veri Yapıları Günay TEMÜR Düzce Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği](https://reader030.fdocument.pub/reader030/viewer/2022040104/5e235a60d00f40614400aa35/html5/thumbnails/11.jpg)
x=pop()
• pop() fonksiyonu, stack hafızadan bir eleman çıkartır.
10
20
30
x=40
40
Stack
Stack Çalışma Mantığı (devam…)
top=3
![Page 12: BMT207 Veri Yapıları · BMT207 Veri Yapıları Günay TEMÜR Düzce Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği](https://reader030.fdocument.pub/reader030/viewer/2022040104/5e235a60d00f40614400aa35/html5/thumbnails/12.jpg)
x=pop()
10
20
x=30
30
• bir eleman daha…
Stack
Stack Çalışma Mantığı (devam…)
top=2
![Page 13: BMT207 Veri Yapıları · BMT207 Veri Yapıları Günay TEMÜR Düzce Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği](https://reader030.fdocument.pub/reader030/viewer/2022040104/5e235a60d00f40614400aa35/html5/thumbnails/13.jpg)
x=pop()
10
x=20
20
• bir eleman daha…
Stack
Stack Çalışma Mantığı (devam…)
top=1
![Page 14: BMT207 Veri Yapıları · BMT207 Veri Yapıları Günay TEMÜR Düzce Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği](https://reader030.fdocument.pub/reader030/viewer/2022040104/5e235a60d00f40614400aa35/html5/thumbnails/14.jpg)
x=pop()
x=10
10
• bir eleman daha…
Stack
Stack Çalışma Mantığı (devam…)
top=0
![Page 15: BMT207 Veri Yapıları · BMT207 Veri Yapıları Günay TEMÜR Düzce Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği](https://reader030.fdocument.pub/reader030/viewer/2022040104/5e235a60d00f40614400aa35/html5/thumbnails/15.jpg)
• Eleman kalmadı.
Stack
Stack Çalışma Mantığı (devam…)
top=-1
Stack empty!!!
![Page 16: BMT207 Veri Yapıları · BMT207 Veri Yapıları Günay TEMÜR Düzce Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği](https://reader030.fdocument.pub/reader030/viewer/2022040104/5e235a60d00f40614400aa35/html5/thumbnails/16.jpg)
• Eleman kalmadı.
Stack
Stack Çalışma Mantığı (devam…)
top=-1
Stack empty!!!
-1 top değeri stack’inboş olduğunu gösterir. Önemli bir belirteçtir.
![Page 17: BMT207 Veri Yapıları · BMT207 Veri Yapıları Günay TEMÜR Düzce Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği](https://reader030.fdocument.pub/reader030/viewer/2022040104/5e235a60d00f40614400aa35/html5/thumbnails/17.jpg)
• Eleman zaten yok.
Stack
Stack Çalışma Mantığı (devam…)
top=-2
HATABoş bir stack’tan
pop işlemi
underflow hatası
x=pop()
top -1’den küçük olamaz
![Page 18: BMT207 Veri Yapıları · BMT207 Veri Yapıları Günay TEMÜR Düzce Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği](https://reader030.fdocument.pub/reader030/viewer/2022040104/5e235a60d00f40614400aa35/html5/thumbnails/18.jpg)
18
• Stack iki şekilde implemente edilebilir:
1. Dizi kullanarak
2. Bağlı liste kullanarak
Stack Implementasyonu
![Page 19: BMT207 Veri Yapıları · BMT207 Veri Yapıları Günay TEMÜR Düzce Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği](https://reader030.fdocument.pub/reader030/viewer/2022040104/5e235a60d00f40614400aa35/html5/thumbnails/19.jpg)
19
1. Word, Excel, Photoshop gibi yazılımlarda yapılan işlemlerin
sırayla kayıt edildiği ve geri alınabilecek şekilde tutulduğu
undo fonksiyonu bir stack uygulamasıdır.
2. C# veya Java gibi programlama dillerinde açılan parantezin
doğru kapatılması kontrolünde (“Matching Bracket” –
“Parantez Eşleştirme” kontrolü) kullanılır.
3. Polish Notasyon: Infix olarak bilinen A*(B+C/D)-E cebirsel
gösteriminin yerine hesap makinelerinde kullanılan postfix
ABCD/+*E- notasyonuna çevirme işleminde stack kullanır.
4. HTML-XML’de tag’lerin eşleştirilmesi bir stack
uygulamasıdır.
Stack Uygulamaları
![Page 20: BMT207 Veri Yapıları · BMT207 Veri Yapıları Günay TEMÜR Düzce Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği](https://reader030.fdocument.pub/reader030/viewer/2022040104/5e235a60d00f40614400aa35/html5/thumbnails/20.jpg)
20
5. Stack’ların bir diğer uygulama alanı labirent türü
problemlerin çözümünde backtracking (bir yola gir yol
tıkanırsa en son yol ayrımına geri gel, başka yola devam et!)
yöntemiyle kullanılır.o Yol bilgisi bir stack yapısına push edilir yol yanlışsa son
gidilen yanlış nokta pop edilir önceki noktayla devam edilir.
6. Java derleyicisi program kodunun tamamını postfix’e
çevirirken stack kullanır.
7. Java Virtual Machine (JVM) byte code’ları execute
ederken altyapısında yine stack kullanır.
8. Recursion ve function call işlemlerinin Bellekte
gerçekleştirilmesinde stack kullanılır.
Stack Uygulamaları (devam…)
![Page 21: BMT207 Veri Yapıları · BMT207 Veri Yapıları Günay TEMÜR Düzce Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği](https://reader030.fdocument.pub/reader030/viewer/2022040104/5e235a60d00f40614400aa35/html5/thumbnails/21.jpg)
21
Uygulama-Hanoi Kuleleri
![Page 22: BMT207 Veri Yapıları · BMT207 Veri Yapıları Günay TEMÜR Düzce Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği](https://reader030.fdocument.pub/reader030/viewer/2022040104/5e235a60d00f40614400aa35/html5/thumbnails/22.jpg)
22
Uygulama-Hanoi Kuleleri
![Page 23: BMT207 Veri Yapıları · BMT207 Veri Yapıları Günay TEMÜR Düzce Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği](https://reader030.fdocument.pub/reader030/viewer/2022040104/5e235a60d00f40614400aa35/html5/thumbnails/23.jpg)
23
• Amacımız string bir ifadeyi tersten yazdırmaktır.
Uygulama-String Reverse
• Çözüm?:
- String ifadedeki her bir karakter soldan-sağa
okunarak, stack’e Push metodu ile eklenir.
- Stack’deki her bir karakter Pop’ile stack’den
okunur ve çıktı olarak verilir.
REVERSE ESREVER
![Page 24: BMT207 Veri Yapıları · BMT207 Veri Yapıları Günay TEMÜR Düzce Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği](https://reader030.fdocument.pub/reader030/viewer/2022040104/5e235a60d00f40614400aa35/html5/thumbnails/24.jpg)
24
• Polish notasyonu Bilgisayar Bilimleri alanındaki
önemli konulardan bir tanesidir. Operatörleri,
operandlardan önce veya sonra gösterme metodu
olarak tanımlanabilir.
o Infix: Bilinen klasik gösterim.
o Prefix: Operatörler operandlardan önce yazılır.
o Postfix: Operatörler operandlardan sonra yazılır.
Polish Notasyonu
![Page 25: BMT207 Veri Yapıları · BMT207 Veri Yapıları Günay TEMÜR Düzce Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği](https://reader030.fdocument.pub/reader030/viewer/2022040104/5e235a60d00f40614400aa35/html5/thumbnails/25.jpg)
25
Örnek: A+B
• Operatör (işlemci) : +
• Operand (işlenenler) A, B
• Infix: A+B
• Prefix:+AB (benzer bir gösterim add(A,B) fonksiyonu)
• Postfix: AB+
Polish Notasyonu
![Page 26: BMT207 Veri Yapıları · BMT207 Veri Yapıları Günay TEMÜR Düzce Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği](https://reader030.fdocument.pub/reader030/viewer/2022040104/5e235a60d00f40614400aa35/html5/thumbnails/26.jpg)
26
• Postfix formda parantez kullanımına gerek yoktur.
• Infix Postfix forma çevrilen bir ifadede operand’ların bağlı
olduğu operator’leri (+,-,*,/) görmek zorlaşır- 3 4 5 * + ifadesinin sonucunun 23’e,
- 3 4 + 5 * ifadesinin sonucunun 35’e karşılık geldiğini bulmak
- Infix gösterime alışık olduğumuz için zor gibi görünür.
• Fakat parantez kullanmadan tek anlama gelen hale dönüşür.
İşlemleri, hesaplamaları yapmak kolaylaşır.
• Birçok derleyici 3*2+5*6 gibi bir Infix ifadenin değerini
hesaplayacağı zaman Postfix forma dönüştürdükten (belirsizliği
ortadan kaldırdıktan sonra) sonucu hesaplar : “3 2 * 5 6 * +”
• Hem InfixPostfix dönüşümünde hem de Postfix
hesaplamasında stack kullanılır.
Polish Notasyonu
![Page 27: BMT207 Veri Yapıları · BMT207 Veri Yapıları Günay TEMÜR Düzce Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği](https://reader030.fdocument.pub/reader030/viewer/2022040104/5e235a60d00f40614400aa35/html5/thumbnails/27.jpg)
51
InfixToPostfix Algoritma
• Sol parantez ise: Sol parantez yığına Push edilir.
• Sağ parantez ise: Sol parantez çıkana kadar yığından Pop
işlemi yapılır. Alınan işlem işareti Postfix ifadeye eklenir.
Sol parantez görüldüğünde Pop işlemine son verilir. Sol
parantez Postfix’e eklenmez.
• Sayı ise: Postfix ifadeye eklenir.
• İşlem işareti ise: Yığının en üstünde sol parantez varsa veya
en üstteki işaretin önceliği bu işaretten düşük ise işlem işareti
yığına Push edilir. Bu işaretin önceliği daha düşük ise
yığındaki bu işaretten yüksek öncelikli işaretler için Pop
işlemi yapılır. Stackten Pop edilenler Postfix ifadeye eklenir.
İşlem işareti yığına push edilir.
• İfadeler bittiğinde: Yığındaki işaretler sıra ile Pop edilerek
postfix ifadeye eklenir.
![Page 28: BMT207 Veri Yapıları · BMT207 Veri Yapıları Günay TEMÜR Düzce Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği](https://reader030.fdocument.pub/reader030/viewer/2022040104/5e235a60d00f40614400aa35/html5/thumbnails/28.jpg)
52
Postfix Çözümleme Algoritma
• Postfix ifade soldan sağa doğru değerlendirilir.
Eğer o anda bakılan:o Sayı ise: Sayı yığına push edilir.
o İşlem işareti ise:
o Yığının üstündeki iki değer pop edilerek aralarında
bu işlem yapılır.
o İşlem sonucu yığının en üstüne push edilir.
![Page 29: BMT207 Veri Yapıları · BMT207 Veri Yapıları Günay TEMÜR Düzce Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği](https://reader030.fdocument.pub/reader030/viewer/2022040104/5e235a60d00f40614400aa35/html5/thumbnails/29.jpg)
• Örnek: 3 4 + 5 6 * 9 2 - + *
3
Uyg5-Postfix Değerlendirme
![Page 30: BMT207 Veri Yapıları · BMT207 Veri Yapıları Günay TEMÜR Düzce Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği](https://reader030.fdocument.pub/reader030/viewer/2022040104/5e235a60d00f40614400aa35/html5/thumbnails/30.jpg)
• Örnek: 3 4 + 5 6 * 9 2 - + *
3
4
Uyg5-Postfix Değerlendirme (devam…)
![Page 31: BMT207 Veri Yapıları · BMT207 Veri Yapıları Günay TEMÜR Düzce Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği](https://reader030.fdocument.pub/reader030/viewer/2022040104/5e235a60d00f40614400aa35/html5/thumbnails/31.jpg)
• Örnek: 3 4 + 5 6 * 9 2 - + *
7
Uyg5-Postfix Değerlendirme (devam…)
![Page 32: BMT207 Veri Yapıları · BMT207 Veri Yapıları Günay TEMÜR Düzce Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği](https://reader030.fdocument.pub/reader030/viewer/2022040104/5e235a60d00f40614400aa35/html5/thumbnails/32.jpg)
• Örnek: 3 4 + 5 6 * 9 2 - + *
7
5
Uyg5-Postfix Değerlendirme (devam…)
![Page 33: BMT207 Veri Yapıları · BMT207 Veri Yapıları Günay TEMÜR Düzce Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği](https://reader030.fdocument.pub/reader030/viewer/2022040104/5e235a60d00f40614400aa35/html5/thumbnails/33.jpg)
• Örnek: 3 4 + 5 6 * 9 2 - + *
7
5
6
Uyg5-Postfix Değerlendirme (devam…)
![Page 34: BMT207 Veri Yapıları · BMT207 Veri Yapıları Günay TEMÜR Düzce Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği](https://reader030.fdocument.pub/reader030/viewer/2022040104/5e235a60d00f40614400aa35/html5/thumbnails/34.jpg)
• Örnek: 3 4 + 5 6 * 9 2 - + *
7
30
Uyg5-Postfix Değerlendirme (devam…)
![Page 35: BMT207 Veri Yapıları · BMT207 Veri Yapıları Günay TEMÜR Düzce Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği](https://reader030.fdocument.pub/reader030/viewer/2022040104/5e235a60d00f40614400aa35/html5/thumbnails/35.jpg)
• Örnek: 3 4 + 5 6 * 9 2 - + *
7
30
9
Uyg5-Postfix Değerlendirme (devam…)
![Page 36: BMT207 Veri Yapıları · BMT207 Veri Yapıları Günay TEMÜR Düzce Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği](https://reader030.fdocument.pub/reader030/viewer/2022040104/5e235a60d00f40614400aa35/html5/thumbnails/36.jpg)
• Örnek: 3 4 + 5 6 * 9 2 - + *
7
30
9
2
Uyg5-Postfix Değerlendirme (devam…)
![Page 37: BMT207 Veri Yapıları · BMT207 Veri Yapıları Günay TEMÜR Düzce Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği](https://reader030.fdocument.pub/reader030/viewer/2022040104/5e235a60d00f40614400aa35/html5/thumbnails/37.jpg)
• Örnek: 3 4 + 5 6 * 9 2 - + *
7
30
7
Uyg5-Postfix Değerlendirme (devam…)
![Page 38: BMT207 Veri Yapıları · BMT207 Veri Yapıları Günay TEMÜR Düzce Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği](https://reader030.fdocument.pub/reader030/viewer/2022040104/5e235a60d00f40614400aa35/html5/thumbnails/38.jpg)
• Örnek: 3 4 + 5 6 * 9 2 - + *
7
37
Uyg5-Postfix Değerlendirme (devam…)
![Page 39: BMT207 Veri Yapıları · BMT207 Veri Yapıları Günay TEMÜR Düzce Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği](https://reader030.fdocument.pub/reader030/viewer/2022040104/5e235a60d00f40614400aa35/html5/thumbnails/39.jpg)
• Örnek: 3 4 + 5 6 * 9 2 - + *
259
Uyg5-Postfix Değerlendirme (devam…)
![Page 40: BMT207 Veri Yapıları · BMT207 Veri Yapıları Günay TEMÜR Düzce Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği](https://reader030.fdocument.pub/reader030/viewer/2022040104/5e235a60d00f40614400aa35/html5/thumbnails/40.jpg)
• Örnek: 3 4 + 5 6 * 9 2 - + *
Uyg5-Postfix Değerlendirme (devam…)
sonuç: pop (259)
stack is empty
![Page 41: BMT207 Veri Yapıları · BMT207 Veri Yapıları Günay TEMÜR Düzce Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği](https://reader030.fdocument.pub/reader030/viewer/2022040104/5e235a60d00f40614400aa35/html5/thumbnails/41.jpg)
BİTTİ
![Page 42: BMT207 Veri Yapıları · BMT207 Veri Yapıları Günay TEMÜR Düzce Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği](https://reader030.fdocument.pub/reader030/viewer/2022040104/5e235a60d00f40614400aa35/html5/thumbnails/42.jpg)
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ı.