SlideShare a Scribd company logo
1 of 79
YZM 2116
Veri Yapıları
Yrd. Doç. Dr. Deniz KILINÇ
Celal Bayar Üniversitesi
Hasan Ferdi Turgutlu Teknoloji Fakültesi
Yazılım Mühendisliği
BÖLÜM - 4
Bu bölümde,
• Stack (Yığın, Yığıt) Veri Yapısı
• Stack Çalışma Şekli
• Stack Dizi Implementasyon
• Stack Uygulamaları
konularına değinilecektir.
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
3Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
• Stack, doğrusal artan bir veri yapısı olup;
• Insert (push) ve Delete (pop) işlemleri,
o Listenin sadece “top” adı verilen bir
ucunda yani stack’in en üstünden
gerçekleştirilir.
• Bu nedenle stack
o Son Giren İlk Çıkar (Last In First Out -
LIFO) mantığı ile işleyen bir veri yapısıdır.
Stack Tanımı
4Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Stack Tanımı (devam…)
5Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Stack ADT Interface
public interface IStack
{
void Push(object item);
object Pop();
object Peek();
bool IsEmpty();
int Top { get; set; }
}
• Push: Elemanı yığıtın üstüne ekle
• Pop: Yığıtın üstündeki elemanı
çıkart
• Peek: En üstteki elemanı oku
• IsEmpty: Yığıt boş mu?
Stack Çalışma Şekli
Stack
stack stk;
• Stack sınıfından tanımlanmış stk isimli bir yığıt olsun.
• İlk aşamada yığıt boş.
stk.push(10)
• Push ile yığıtın üstüne yeni bir eleman ekliyoruz.
10
10
Stack Çalışma Şekli (devam…)
Stack
stk.push(20)
• Push ile yığıta yeni bir eleman ekliyoruz.
10
20
20
Stack Çalışma Şekli (devam…)
Stack
stk.push(30)
10
30
20
30
Stack Çalışma Şekli (devam…)
• Push ile yığıta yeni bir eleman ekliyoruz.
Stack
stk.push(40)
10
40
20
30
40
Stack Çalışma Şekli (devam…)
• Push ile yığıta yeni bir eleman ekliyoruz.
Stack
x=stk.pop()
• Pop ile yığıtın üstünden bir eleman çıkartıyoruz.
10
20
30
x=40
40
Stack Çalışma Şekli (devam…)
Stack
x=stk.pop()
10
20
x=30
30
Stack Çalışma Şekli (devam…)
• Pop ile yığıtın üstünden bir eleman çıkartıyoruz.
Stack
x=stk.pop()
10
x=20
20
Stack Çalışma Şekli (devam…)
• Pop ile yığıtın üstünden bir eleman çıkartıyoruz.
Stack
x=stk.pop()
x=10
10
Stack Çalışma Şekli (devam…)
• Pop ile yığıtın üstünden bir eleman çıkartıyoruz.
Stack
15Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
• Stack iki şekilde implemente edilebilir:
1. Dizi kullanarak
2. Bağlı liste kullanarak
Stack Implementasyonu
Stack Dizi ile Gerçekleştirim
• Dizi ile gerçekleştirmede
stack elemanları dizi
üzerinde tutulur.
• Bir tam sayı değişken
yığıtın tepesindeki
elemanın adresini takip
etmek için kullanılır.
Eleman 3
Eleman 2
Eleman 0
Eleman 1
Tepeyi
takip
eden
indis
Stack
Dizi[0]
Dizi[1]
Dizi[2]
Dizi[3]
Dizi[4]
Dizi[5]
Dizi[6]
Dizi[7]
Stack
Top=-1
Dizi[0]
Dizi[1]
Dizi[2]
Dizi[3]
Dizi[4]
Dizi[5]
Dizi[6]
Dizi[7]
Stack Dizi ile Gerçekleştirim (devam…)
Eleman0
Stack
Top=0
Stack.push(Eleman0)
Dizi[0]
Dizi[1]
Dizi[2]
Dizi[3]
Dizi[4]
Dizi[5]
Dizi[6]
Dizi[7]
Stack Dizi ile Gerçekleştirim (devam…)
Eleman3
Eleman2
Eleman0
Eleman1
Stack
Top=3
Stack.push(Eleman0)
Stack.push(Eleman1)
Stack.push(Eleman2)
Stack.push(Eleman3)
Dizi[0]
Dizi[1]
Dizi[2]
Dizi[3]
Dizi[4]
Dizi[5]
Dizi[6]
Dizi[7]
Stack Dizi ile Gerçekleştirim (devam…)
Stack.push(Eleman0)
Stack.push(Eleman1)
Stack.push(Eleman2)
Stack.push(Eleman3)
Stack.push(Eleman4)Eleman4
Eleman3
Eleman2
Eleman0
Eleman1
Stack
Top=4
Dizi[0]
Dizi[1]
Dizi[2]
Dizi[3]
Dizi[4]
Dizi[5]
Dizi[6]
Dizi[7]
Stack Dizi ile Gerçekleştirim (devam…)
Stack.push(Eleman0)
Stack.push(Eleman1)
Stack.push(Eleman2)
Stack.push(Eleman3)
Stack.push(Eleman4)
Stack.push(Eleman5)
Eleman5
Eleman4
Eleman3
Eleman2
Eleman0
Eleman1
Stack
Top=5
Dizi[0]
Dizi[1]
Dizi[2]
Dizi[3]
Dizi[4]
Dizi[5]
Dizi[6]
Dizi[7]
Stack Dizi ile Gerçekleştirim (devam…)
Stack.push(Eleman0)
Stack.push(Eleman1)
Stack.push(Eleman2)
Stack.push(Eleman3)
Stack.push(Eleman4)
Stack.push(Eleman5)
Stack.push(Eleman6)
Stack.push(Eleman7)
Eleman7
Eleman6
Eleman5
Eleman4
Eleman3
Eleman2
Eleman0
Eleman1
Stack
Top=7
Dizi[0]
Dizi[1]
Dizi[2]
Dizi[3]
Dizi[4]
Dizi[5]
Dizi[6]
Dizi[7]
Stack Dizi ile Gerçekleştirim (devam…)
Stack.push(Eleman0)
Stack.push(Eleman1)
Stack.push(Eleman2)
Stack.push(Eleman3)
Stack.push(Eleman4)
Stack.push(Eleman5)
Stack.push(Eleman6)
Stack.push(Eleman8)
Eleman7
Eleman6
Eleman5
Eleman4
Eleman3
Eleman2
Eleman0
Eleman1
Stack
Top=8
Dizi[0]
Dizi[1]
Dizi[2]
Dizi[3]
Dizi[4]
Dizi[5]
Dizi[6]
Dizi[7]
HATA
Top<kapasite
olmalı
Stack Dizi ile Gerçekleştirim (devam…)
Tamamen dolu
bir stack’a push
işlemi overflow
hatası
Stack.push(Eleman0)
Stack. push(Eleman1)
Stack. push(Eleman2)
Stack. push(Eleman3)
Stack.push(Eleman4)
Stack.push(Eleman5)
Stack.push(Eleman6)
Stack.push(Eleman7)
Stack.pop()
Eleman6
Eleman5
Eleman4
Eleman3
Eleman2
Eleman0
Eleman1
Stack
Top=6
Dizi[0]
Dizi[1]
Dizi[2]
Dizi[3]
Dizi[4]
Dizi[5]
Dizi[6]
Dizi[7]
Stack Dizi ile Gerçekleştirim (devam…)
Stack.push(Eleman0)
Stack. push(Eleman1)
Stack. push(Eleman2)
Stack. push(Eleman3)
Stack.push(Eleman4)
Stack.push(Eleman5)
Stack.push(Eleman6)
Stack.push(Eleman7)
Stack.pop()
Stack.pop()
Eleman5
Eleman4
Eleman3
Eleman2
Eleman0
Eleman1
Stack
Top=5
Dizi[0]
Dizi[1]
Dizi[2]
Dizi[3]
Dizi[4]
Dizi[5]
Dizi[6]
Dizi[7]
Stack Dizi ile Gerçekleştirim (devam…)
Stack.push(Eleman0)
Stack. push(Eleman1)
Stack. push(Eleman2)
Stack. push(Eleman3)
Stack.push(Eleman4)
Stack.push(Eleman5)
Stack.push(Eleman6)
Stack.push(Eleman7)
Stack.pop()
Stack.pop()
Stack.pop()
Stack.pop()
Stack.pop()
Stack.pop()
Stack.pop()
Eleman0
Stack
Top=0Dizi[0]
Dizi[1]
Dizi[2]
Dizi[3]
Dizi[4]
Dizi[5]
Dizi[6]
Dizi[7]
Stack Dizi ile Gerçekleştirim (devam…)
Stack
Top=-1
Stack.push(Eleman0)
Stack. push(Eleman1)
Stack. push(Eleman2)
Stack. push(Eleman3)
Stack.push(Eleman4)
Stack.push(Eleman5)
Stack.push(Eleman6)
Stack.push(Eleman7)
Stack.pop()
Stack.pop()
Stack.pop()
Stack.pop()
Stack.pop()
Stack.pop()
Stack.pop()
Stack.pop()
Dizi[0]
Dizi[1]
Dizi[2]
Dizi[3]
Dizi[4]
Dizi[5]
Dizi[6]
Dizi[7]
-1 indis değeri
yığıtın boş
olduğunu gösterir
Stack Dizi ile Gerçekleştirim (devam…)
Stack
Top=-2
Stack.push(Eleman0)
Stack. push(Eleman1)
Stack. push(Eleman2)
Stack. push(Eleman3)
Stack.push(Eleman4)
Stack.push(Eleman5)
Stack.push(Eleman6)
Stack.push(Eleman7)
Stack.pop()
Stack.pop()
Stack.pop()
Stack.pop()
Stack.pop()
Stack.pop()
Stack.pop()
Stack.pop()
Stack.pop()
Dizi[0]
Dizi[1]
Dizi[2]
Dizi[3]
Dizi[4]
Dizi[5]
Dizi[6]
Dizi[7]
HATA
-1’den küçük
olamaz
Stack Dizi ile Gerçekleştirim (devam…)
Boş bir stack’ta
pop işlemi
underflow
hatası
29Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
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. Bir web tarayıcısındada ileri-geri adres gezmek için stack
yapısı kullanır.
3. 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.
4. 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.
5. HTML-XML’de tag’lerin eşleştirilmesi bir stack
uygulamasıdır.
Stack Uygulamaları
30Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
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…)
31Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
• Amacımız string bir ifadeyi tersten yazdırmaktır.
Uyg1-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
geriye doğru okunur ve silinir.
REVERSE  ESREVER
32Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Uyg1-String Reverse (devam…)
33Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
• Matematiksel bir ifadede veya program kodundaki
parantez eşleştirme kontrolünü yapmak için stack
kullanılabilir.
Uyg2-Parantez Eşleştirme
Geçerli İfadeler Geçersiz İfadeler
{ }
( { [ ] } )
{ [ ] ( ) }
[ { ( { } [ ] ( { })}]
{ ( }
( [ ( ( ) ] )
{ } [ ] )
[ { ) } ( ] } ]
34Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
• Algoritma?
o Bir açılış parantezi ile karşılaşıldığında “(”, “{”, “[”
stack’e Push edilir.
o Bir kapanış parantezi ile karşılaşıldığında “)”, “}”,
“]” stack’e bakılır, stack boş değilse stack’ten bir
eleman Pop edilerek, doğru karşılık olup olmadığı
kontrol edilir.
 Doğruysa işlem sürdürülür.
 Doğru değilse ifade geçersizdir.
o Stack sonuna ulaşıldığında stack boş olmalıdır.
 Aksi halde açılmış ama kapanmamış parantez olabilir.
Uyg2-Parantez Eşleştirme (devam…)
[A+25*{Y*(B+C-X)-K}/D*(E+13)+M]
35Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Uyg2-Parantez Eşleştirme (devam…)
Test: [A+25*{Y*(B+C-X)-K}/D*(E+13)+M]
36Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
• 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 Notasyon
37Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Ö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 Notasyon (devam…)
Infix Postfix
A+B-C
(A+B)*(C-D)
A^B*C-D+E/F/(G+H)
AB+C-
AB+CD-*
AB^C*D-EF/GH+/+
38Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
• 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 InfixPostfix dönüşümünde hem de Postfix
hesaplamasında stack kullanılabilir.
Polish Notasyon (devam…)
• (10+20)*(30+40)/(50+60)
• Stack :
• Çıkış :
Uyg4-InfixToPostfix
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
• (10+20)*(30+40)/(50+60)
• Stack : (
• Çıkış :
Uyg4-InfixToPostfix (devam…)
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
• (10+20)*(30+40)/(50+60)
• Stack : (
• Çıkış : 10
Uyg4-InfixToPostfix (devam…)
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
• (10+20)*(30+40)/(50+60)
• Stack : ( +
• Çıkış : 10
Uyg4-InfixToPostfix (devam…)
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
• (10+20)*(30+40)/(50+60)
• Stack : ( +
• Çıkış : 10 20
Uyg4-InfixToPostfix (devam…)
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
• (10+20)*(30+40)/(50+60)
• Stack : ( +
• Çıkış : 10 20 +
Uyg4-InfixToPostfix (devam…)
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
• (10+20)*(30+40)/(50+60)
• Stack : (
• Çıkış : 10 20 +
Uyg4-InfixToPostfix (devam…)
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
• (10+20)*(30+40)/(50+60)
• Stack : *
• Çıkış : 10 20 +
Uyg4-InfixToPostfix (devam…)
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
• (10+20)*(30+40)/(50+60)
• Stack : * (
• Çıkış : 10 20 +
Uyg4-InfixToPostfix (devam…)
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
• (10+20)*(30+40)/(50-60)
• Stack : * (
• Çıkış : 10 20 + 30
Uyg4-InfixToPostfix (devam…)
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
• (10+20)*(30+40)/(50-60)
• Stack : * ( +
• Çıkış : 10 20 + 30
Uyg4-InfixToPostfix (devam…)
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
• (10+20)*(30+40)/(50-60)
• Stack : * ( +
• Çıkış : 10 20 + 30 40
Uyg4-InfixToPostfix (devam…)
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
• (10+20)*(30+40)/(50-60)
• Stack : * ( +
• Çıkış : 10 20 + 30 40 +
Uyg4-InfixToPostfix (devam…)
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
• (10+20)*(30+40)/(50-60)
• Stack : * (
• Çıkış : 10 20 + 30 40 +
Uyg4-InfixToPostfix (devam…)
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
• (10+20)*(30+40)/(50-60)
• Stack : *
• Çıkış : 10 20 + 30 40 + *
Uyg4-InfixToPostfix (devam…)
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
• (10+20)*(30+40)/(50-60)
• Stack : /
• Çıkış : 10 20 + 30 40 + *
Uyg4-InfixToPostfix (devam…)
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
• (10+20)*(30+40)/(50-60)
• Stack : / (
• Çıkış : 10 20 + 30 40 + *
Uyg4-InfixToPostfix (devam…)
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
• (10+20)*(30+40)/(50-60)
• Stack : / (
• Çıkış : 10 20 + 30 40 + * 50
Uyg4-InfixToPostfix (devam…)
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
• (10+20)*(30+40)/(50-60)
• Stack : / (-
• Çıkış : 10 20 + 30 40 + * 50
Uyg4-InfixToPostfix (devam…)
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
• (10+20)*(30+40)/(50-60)
• Stack : / (-
• Çıkış : 10 20 + 30 40 + * 50 60
Uyg4-InfixToPostfix (devam…)
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
• (10+20)*(30+40)/(50-60)
• Stack : / (-
• Çıkış : 10 20 + 30 40 + * 50 60 -
Uyg4-InfixToPostfix (devam…)
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
• (10+20)*(30+40)/(50-60)
• Stack : / (
• Çıkış : 10 20 + 30 40 + * 50 60 -
Uyg4-InfixToPostfix (devam…)
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
• (10+20)*(30+40)/(50-60)
• Stack : /
• Çıkış : 10 20 + 30 40 + * 50 60 - /
Uyg4-InfixToPostfix (devam…)
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
62Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
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.
63Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
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.
• Örnek: 3 4 + 5 6 * 9 2 - + *
3
Uyg5-Postfix Değerlendirme
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
• Örnek: 3 4 + 5 6 * 9 2 - + *
3
4
Uyg5-Postfix Değerlendirme (devam…)
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
• Örnek: 3 4 + 5 6 * 9 2 - + *
7
Uyg5-Postfix Değerlendirme (devam…)
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
• Örnek: 3 4 + 5 6 * 9 2 - + *
7
5
Uyg5-Postfix Değerlendirme (devam…)
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
• Örnek: 3 4 + 5 6 * 9 2 - + *
7
5
6
Uyg5-Postfix Değerlendirme (devam…)
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
• Örnek: 3 4 + 5 6 * 9 2 - + *
7
30
Uyg5-Postfix Değerlendirme (devam…)
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
• Örnek: 3 4 + 5 6 * 9 2 - + *
7
30
9
Uyg5-Postfix Değerlendirme (devam…)
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
• Örnek: 3 4 + 5 6 * 9 2 - + *
7
30
9
2
Uyg5-Postfix Değerlendirme (devam…)
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
• Örnek: 3 4 + 5 6 * 9 2 - + *
7
30
7
Uyg5-Postfix Değerlendirme (devam…)
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
• Örnek: 3 4 + 5 6 * 9 2 - + *
7
37
Uyg5-Postfix Değerlendirme (devam…)
• Örnek: 3 4 + 5 6 * 9 2 - + *
259
Uyg5-Postfix Değerlendirme (devam…)
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Stack İşlem Karmaşıklığı
• Dizi ile tanımlanan stack’ta boyut önceden belirli
olmalıdır.
• Bu bağlamda stack’taki eleman sayısı n olarak kabul
edilirse bir stack için (dizi ve bağlı liste için) işlem
karmaşıklıkları aşağıdaki gibidir.
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Recursion
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
public void Uygulama2(Node test)
{
if (test == null)
return;
MessageBox.Show(test.Data.ToString());
if (test.Next != null)
Uygulama2(test.Next.Next);
MessageBox.Show(test.Data.ToString());
}
Test: 123456
Recursion
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Test Next.Next Print1 Durum Print2
1 3 1 Devam -
3 5 3 Devam -
5 Null 5 Çıktı 5
3 5 - KalDevÇık 3
1 3 - KalDevÇık 1
İYİ ÇALIŞMALAR…
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Yararlanılan Kaynaklar
• Ders Kitabı:
• Data Structures through JAVA, V.V.Muniswamy
• Yardımcı Okumalar:
• Data Structures and Algorithms in Java, Narashima
Karumanchi
• Data Structures, Algorithms and Applications in Java,
Sartaj Sahni
• Algorithms, Robert Sedgewick
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları

More Related Content

What's hot

Yzm 2116 Bölüm 8 - İkili Arama Ağacı - Binary Search Tree
Yzm 2116   Bölüm 8 - İkili Arama Ağacı - Binary Search TreeYzm 2116   Bölüm 8 - İkili Arama Ağacı - Binary Search Tree
Yzm 2116 Bölüm 8 - İkili Arama Ağacı - Binary Search TreeDeniz KILINÇ
 
Yzm 2116 - Bölüm 2 (Algoritma Analizi)
Yzm 2116  - Bölüm 2 (Algoritma Analizi)Yzm 2116  - Bölüm 2 (Algoritma Analizi)
Yzm 2116 - Bölüm 2 (Algoritma Analizi)Deniz KILINÇ
 
Stack using Linked List
Stack using Linked ListStack using Linked List
Stack using Linked ListSayantan Sur
 
Estrutura de Dados - Aula 12 - Pesquisa de Dados (Sequencial e Binária)
Estrutura de Dados - Aula 12 - Pesquisa de Dados (Sequencial e Binária)Estrutura de Dados - Aula 12 - Pesquisa de Dados (Sequencial e Binária)
Estrutura de Dados - Aula 12 - Pesquisa de Dados (Sequencial e Binária)Leinylson Fontinele
 
6. Linked list - Data Structures using C++ by Varsha Patil
6. Linked list - Data Structures using C++ by Varsha Patil6. Linked list - Data Structures using C++ by Varsha Patil
6. Linked list - Data Structures using C++ by Varsha Patilwidespreadpromotion
 
Estrutura de Dados Aula 04 - Listas Estáticas
Estrutura de Dados Aula 04 - Listas EstáticasEstrutura de Dados Aula 04 - Listas Estáticas
Estrutura de Dados Aula 04 - Listas EstáticasLeinylson Fontinele
 
Bağli li̇steler (Linked List) – Yiğinlar (Stack) - Kuyruklar Konu Anlatımı
Bağli li̇steler (Linked List) – Yiğinlar (Stack) - Kuyruklar Konu Anlatımı Bağli li̇steler (Linked List) – Yiğinlar (Stack) - Kuyruklar Konu Anlatımı
Bağli li̇steler (Linked List) – Yiğinlar (Stack) - Kuyruklar Konu Anlatımı Ömer Özselçuk
 
What is Stack, Its Operations, Queue, Circular Queue, Priority Queue
What is Stack, Its Operations, Queue, Circular Queue, Priority QueueWhat is Stack, Its Operations, Queue, Circular Queue, Priority Queue
What is Stack, Its Operations, Queue, Circular Queue, Priority QueueBalwant Gorad
 
Ordenamiento por mezcla
Ordenamiento por mezclaOrdenamiento por mezcla
Ordenamiento por mezclapambele
 
Selection sort
Selection sortSelection sort
Selection sortJay Patel
 
Queue_Data_Structure.pptx
Queue_Data_Structure.pptxQueue_Data_Structure.pptx
Queue_Data_Structure.pptxsandeep54552
 

What's hot (20)

Yzm 2116 Bölüm 8 - İkili Arama Ağacı - Binary Search Tree
Yzm 2116   Bölüm 8 - İkili Arama Ağacı - Binary Search TreeYzm 2116   Bölüm 8 - İkili Arama Ağacı - Binary Search Tree
Yzm 2116 Bölüm 8 - İkili Arama Ağacı - Binary Search Tree
 
Yzm 2116 - Bölüm 2 (Algoritma Analizi)
Yzm 2116  - Bölüm 2 (Algoritma Analizi)Yzm 2116  - Bölüm 2 (Algoritma Analizi)
Yzm 2116 - Bölüm 2 (Algoritma Analizi)
 
Heap_Sort1.pptx
Heap_Sort1.pptxHeap_Sort1.pptx
Heap_Sort1.pptx
 
BINARY SEARCH TREE
BINARY SEARCH TREE BINARY SEARCH TREE
BINARY SEARCH TREE
 
Sas practice programs
Sas practice programsSas practice programs
Sas practice programs
 
Stack using Linked List
Stack using Linked ListStack using Linked List
Stack using Linked List
 
Stacks and Queue - Data Structures
Stacks and Queue - Data StructuresStacks and Queue - Data Structures
Stacks and Queue - Data Structures
 
Estrutura de Dados - Aula 12 - Pesquisa de Dados (Sequencial e Binária)
Estrutura de Dados - Aula 12 - Pesquisa de Dados (Sequencial e Binária)Estrutura de Dados - Aula 12 - Pesquisa de Dados (Sequencial e Binária)
Estrutura de Dados - Aula 12 - Pesquisa de Dados (Sequencial e Binária)
 
6. Linked list - Data Structures using C++ by Varsha Patil
6. Linked list - Data Structures using C++ by Varsha Patil6. Linked list - Data Structures using C++ by Varsha Patil
6. Linked list - Data Structures using C++ by Varsha Patil
 
Data Structures
Data StructuresData Structures
Data Structures
 
Estrutura de Dados Aula 04 - Listas Estáticas
Estrutura de Dados Aula 04 - Listas EstáticasEstrutura de Dados Aula 04 - Listas Estáticas
Estrutura de Dados Aula 04 - Listas Estáticas
 
Pilas y Colas
Pilas y ColasPilas y Colas
Pilas y Colas
 
Bağli li̇steler (Linked List) – Yiğinlar (Stack) - Kuyruklar Konu Anlatımı
Bağli li̇steler (Linked List) – Yiğinlar (Stack) - Kuyruklar Konu Anlatımı Bağli li̇steler (Linked List) – Yiğinlar (Stack) - Kuyruklar Konu Anlatımı
Bağli li̇steler (Linked List) – Yiğinlar (Stack) - Kuyruklar Konu Anlatımı
 
What is Stack, Its Operations, Queue, Circular Queue, Priority Queue
What is Stack, Its Operations, Queue, Circular Queue, Priority QueueWhat is Stack, Its Operations, Queue, Circular Queue, Priority Queue
What is Stack, Its Operations, Queue, Circular Queue, Priority Queue
 
Stack of Data structure
Stack of Data structureStack of Data structure
Stack of Data structure
 
Ordenamiento por mezcla
Ordenamiento por mezclaOrdenamiento por mezcla
Ordenamiento por mezcla
 
Selection sort
Selection sortSelection sort
Selection sort
 
Queue_Data_Structure.pptx
Queue_Data_Structure.pptxQueue_Data_Structure.pptx
Queue_Data_Structure.pptx
 
Pilhas e Filas
Pilhas e FilasPilhas e Filas
Pilhas e Filas
 
Quick_sort1.pptx
Quick_sort1.pptxQuick_sort1.pptx
Quick_sort1.pptx
 

Yzm 2116 - Bölüm 4 (Stack, Yığın, Yığıt)