Selamun aleyküm.
Javada Stack Memory.
Stack bir veri yapısıdır, her defasında son kaydedilen dataya erişmemizi sağlayan. Bu çalışma prensibine LIFO prinzip ( Last in First out ) olarak anılır. Bir oyun olan Legodan bakalım Stackimize. Her parçayı üst üste koyuyoruz ve bu parçaların hepsi Stack'e kaydediliyor.
Mesela inşaa ettiğimiz bir legonun üstüne başka bir parça koyup bunu büyültebiliriz, bu operasyonun adına Push denir. Veyahut bir taş eksilterek bunu küçültebiliriz bu operasyonun adı Pop'dur.
Ama unutmamamız gerekir, sadece en üstteki taş ile çalışabiliriz çünkü öbür taşlar ile erişimimiz yok.
Stack Uygulama Alanları.
Şimdi düşünelim, şu an bulunduğunuz browserin geri tuşu nasıl çalışıyor?
Thtye girdik ama ilk girdiğimiz siteye geri dönmek istiyoryz yani şöyle.
Google, THT, Konu.
Şimdi geri Google'a dönmek istiyoruz napıcaz 2 kere geri tuşuna basıcaz. Ve sonra Google'dayız ama browser bizim hangi sitede olduğumuzu nerden biliyor?
Evvveet doğru bildiniz Stackde ki veriler ile, Bellek yığını'nı unutmamak lazım. Her siteden çıktığımızda Pop işlemi ile son veri çıkartılıyor.
Şimdi Google'a girdik Stack durumunuz;
THT'ye girdik Stack durumumuz;
Konuma girdik Stack durumumuz;
Push işlemi ile Taban değere ekliyoruz.
Şimdi Google'a dönmek istediğimiz de Pop işlemi uygulayışını görelim,Konumdayken Geri tuşuna bastık THTdeyiz Stack durumumuz;
Farkındaysanız en taban değeri atıyoruz. Bir geri daha Google'dayız Stack durumu;
Bir geriye bastığımızda Stackde değer olmadığı için Exit() komutunu algılar.
Bağlı listelerde Stack.
Stack oluşturmak için nelere ihtiyaç duyarız?
Ne kadar çok Veri Taşıyıcı (Data Container) oluşturursak, Stack'imiz o kadar büyük olur. En üstteki DC'ye ve altındaki DC'lere erişimimiz olmalı. Şimdi en üstteki değeri referans alabileceğimiz bir değisken tanımlayalım.
İşimizi kolaylaştırmak için en yüksek adlı bir değisken tanımlayalım Bellek yığınındaki değerleri sayabilmek icin.
2.Satırda static MAX_DEGER tanımladık ve 10 değerini atadık. Şimdilik 10'u geçmesin diye.
3.Satırda Parcalar adlı keyworde tabanParca ekledik null değerini atadık. Stack işleminde tabandaki elementi belleğe kaydetmek için.
4.satırdaki yukseklik değiskeninin görevi bütün ilerlemeleri Stack'e kaydetmek. Bu değiskeni Push ile arttırmalı, Pop ile azaltmalıyız.
Şimdilik bu kadar, bir daha ki makalemde Push methodunu anlatacağım. Allaha emanet, ne kadar sürçi lisan ettiysek affola.
Javada Stack Memory.
Stack bir veri yapısıdır, her defasında son kaydedilen dataya erişmemizi sağlayan. Bu çalışma prensibine LIFO prinzip ( Last in First out ) olarak anılır. Bir oyun olan Legodan bakalım Stackimize. Her parçayı üst üste koyuyoruz ve bu parçaların hepsi Stack'e kaydediliyor.
Mesela inşaa ettiğimiz bir legonun üstüne başka bir parça koyup bunu büyültebiliriz, bu operasyonun adına Push denir. Veyahut bir taş eksilterek bunu küçültebiliriz bu operasyonun adı Pop'dur.
Ama unutmamamız gerekir, sadece en üstteki taş ile çalışabiliriz çünkü öbür taşlar ile erişimimiz yok.
Stack Uygulama Alanları.
Şimdi düşünelim, şu an bulunduğunuz browserin geri tuşu nasıl çalışıyor?
Thtye girdik ama ilk girdiğimiz siteye geri dönmek istiyoryz yani şöyle.
Google, THT, Konu.
Şimdi geri Google'a dönmek istiyoruz napıcaz 2 kere geri tuşuna basıcaz. Ve sonra Google'dayız ama browser bizim hangi sitede olduğumuzu nerden biliyor?
Evvveet doğru bildiniz Stackde ki veriler ile, Bellek yığını'nı unutmamak lazım. Her siteden çıktığımızda Pop işlemi ile son veri çıkartılıyor.
Şimdi Google'a girdik Stack durumunuz;
Kod:
1.Sayfa
THT'ye girdik Stack durumumuz;
Kod:
2.Sayfa
1.Sayfa
Konuma girdik Stack durumumuz;
Kod:
3.Sayfa
2.Sayfa
1.Sayfa
Push işlemi ile Taban değere ekliyoruz.
Şimdi Google'a dönmek istediğimiz de Pop işlemi uygulayışını görelim,Konumdayken Geri tuşuna bastık THTdeyiz Stack durumumuz;
Kod:
2.Sayfa
1.Sayfa
Farkındaysanız en taban değeri atıyoruz. Bir geri daha Google'dayız Stack durumu;
Kod:
1.Sayfa
Bir geriye bastığımızda Stackde değer olmadığı için Exit() komutunu algılar.
Bağlı listelerde Stack.
Stack oluşturmak için nelere ihtiyaç duyarız?
Ne kadar çok Veri Taşıyıcı (Data Container) oluşturursak, Stack'imiz o kadar büyük olur. En üstteki DC'ye ve altındaki DC'lere erişimimiz olmalı. Şimdi en üstteki değeri referans alabileceğimiz bir değisken tanımlayalım.
İşimizi kolaylaştırmak için en yüksek adlı bir değisken tanımlayalım Bellek yığınındaki değerleri sayabilmek icin.
Kod:
public class StackBellek {
private final static int MAX_DEGER = 10;
private Parcalar tabanParca = null;
private int yukseklik = 0;
}
2.Satırda static MAX_DEGER tanımladık ve 10 değerini atadık. Şimdilik 10'u geçmesin diye.
3.Satırda Parcalar adlı keyworde tabanParca ekledik null değerini atadık. Stack işleminde tabandaki elementi belleğe kaydetmek için.
4.satırdaki yukseklik değiskeninin görevi bütün ilerlemeleri Stack'e kaydetmek. Bu değiskeni Push ile arttırmalı, Pop ile azaltmalıyız.
Şimdilik bu kadar, bir daha ki makalemde Push methodunu anlatacağım. Allaha emanet, ne kadar sürçi lisan ettiysek affola.

