Python da Stack

Stack Nedir? ; Stack, her defasında son kaydedilen dataya erişmemizi sağlayan bir veri yapısıdır. Bu çalışma prensibine, “LIFO ( Last in First out )” denir.Bir oyun olan Legodan bakalım Stackimize. Her parçayı üst üste koyuyoruz ve bu parçaların hepsi Stack’e kaydediliyor.

Stack Nedir

Mesela inşa 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ı ise, “Pop”’dur.

Ama unutmamamız gerekir, sadece en üstteki taş ile çalışabiliriz, diğer taşlara erişimimiz yok.

Stack’in Uygulama Alanları

Şimdi düşünelim, şu an bulunduğunuz browserin geri tuşu nasıl çalışıyor? TEKNOLTAN’a girdik ama ilk girdiğimiz siteye geri dönmek istiyoruz yani şöyle,

Google, TEKNOLTAN, Konu

Şimdi geri Google’a dönmek istiyoruz, ne yapacağız? İki kere geri tuşuna basacağız, ve sonra Google’dayız ama browser bizim hangi sitede olduğumuzu nerden biliyor?

Evet, doğru bildiniz Stack’deki 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;

1. Sayfa

TEKNOLTAN’a girdik Stack durumumuz;

2. Sayfa
1. Sayfa

Konuya girdik Stack durumumuz;

3. Sayfa
2. Sayfa
1. Sayfa

Gördüğünüz üzere, “Push” işlemi ile tabana değere ekliyoruz.

TEKNOLTAN’a dönmek istediğimiz de “Pop” işleminin uygulanışını görelim, konudayken Geri tuşuna bastık TEKNOLTAN’dayız, Stack durumumuz;

2. Sayfa
1. Sayfa

Python’da Örneği
Gist: https://gist.github.com/laszlokuehl/ce69f6abc3e4e2f1e94f2adf2196bee0

class Stack:

def  init (self, maxSize):

self.maxSize = int(maxSize) self.	data = []

def 	str	(self):

return str(self.	data)

def  repr (self):

return self.	str	()

def 	error(self, msg):

raise Exception(msg)

def isEmpty(self):

return len(self.	data) == 0

def isFull(self):

return len(self.	data) == self.maxSize

def push(self, item):

return self.	data.append(item) if self.isFull() != True else self.	error('Stack is full')

def pop(self):

return self.	data.pop(-l) if self.isEmpty() != True else self.	error('Stack is empty')

def peek(self):

return self.	data[-l] if self.isEmpty() != True else self.	error('Stack is empty')

def search(self, item):

return self.	data.index(item) if self.isEmpty() != True else self.	error('Stack is empty')

Şöyle bir örnekte bırakalım,

>>> _geri = Stack(20)
>>> _ileri = Stack(20)
>>> 
>>> def geri():
...     _ileri.push(_geri.pop())
...     
>>> 
>>> def ileri():
...     _geri.push(_ileri.pop())
...     
>>> 
>>> _geri.push(’google.com’)
>>> _geri.push(’github.com’)
>>> _geri.push(’github.com/laszlokuehl’)
>>> 
>>> geri()
>>> 
>>> _ileri
[’github.com/laszlokuehl’]
>>> 
>>> geri()
>>> geri()
>>> 
>>> _ileri
[’github.com/laszlokuehl’, ’github.com’, ’google.com’]
>>> 
>>> ileri()
>>> ileri()
>>> ileri()
>>> 
>>> _geri
[’google.com’, ’github.com’, ’github.com/laszlokuehl’]
>>> 
>>> _ileri
[]
>>> 

Yorum yapın