Veri yapıları dersine devam ediyoruz.
Basitçe tanımlarsak elimizdeki verilerimizi koyabileceğimiz,ekleme çıkarma yapabileceğimiz yapılardır stackler.
Bir çukur düşünün, evimizdeki eski eşyaları oraya atıyoruz. İlk attığımız eşyanın eski bir radyo, son attığımız eşyanın ise masa olduğunu düşünün. Radyo yu geri çıkarmamız için önce masayı çıkartmamız gerekir. Veya şuanda bu yazıyı okuyorsunuz, ilginizi çekmedi ve geri butonuna bastınız. Bu geri butonuna tekrar basarsanız ondan önceki sayfalara gitmeye başlar. İşte tarayıcı bu adresleri stacklerde tutabilir.
Stackler ekleme çıkarma işlemleri her zaman aynı yerden yapılan yapılardır.
(Çukur örneği)
Queues
Bunuda çukur yerine boru gibi düşünebiliriz. Borudan ilk giren ilk çıkar.
Basitçe tanımlarsak elimizdeki verilerimizi koyabileceğimiz,ekleme çıkarma yapabileceğimiz yapılardır stackler.
Bir çukur düşünün, evimizdeki eski eşyaları oraya atıyoruz. İlk attığımız eşyanın eski bir radyo, son attığımız eşyanın ise masa olduğunu düşünün. Radyo yu geri çıkarmamız için önce masayı çıkartmamız gerekir. Veya şuanda bu yazıyı okuyorsunuz, ilginizi çekmedi ve geri butonuna bastınız. Bu geri butonuna tekrar basarsanız ondan önceki sayfalara gitmeye başlar. İşte tarayıcı bu adresleri stacklerde tutabilir.
Stackler ekleme çıkarma işlemleri her zaman aynı yerden yapılan yapılardır.
Kod:
Ekleme ve çıkarma işlemleri stack in top kısmından yapılır.
Kod:
Stacklerde ilk giren son çıkar mantığı ile çalışır.
Kod:
3 Temel fonksiyonu vardır;
Push:Eleman ekleme
Pop:Eleman çıkarma
Top:En tepedeki eleman
Kod:
class Stack:
def __init__(self):
self.items = []
def isEmpty(self):
return self.items ==[] #False or True?
def push(self,item):
self.items.append(item)
def pop(self):
return self.items.pop()
def top(self):
return self.items[len(self.items)-1] # f(0) = first index
def size(self):
return(len(self.items))
Kod:
Depo = Stack()
Depo.isEmpty()
Out[19]: True
Depo.push("First Index")
Depo.push("Second Index")
Depo.top()
Out[22]: 'Second Index'
Depo.size()
Out[23]: 2
Depo.pop()
Out[24]: 'Second Index'
Depo.top()
Out[25]: 'First Index'
Queues
Bunuda çukur yerine boru gibi düşünebiliriz. Borudan ilk giren ilk çıkar.
Kod:
"rear" kısmından veri ekleriz ve "front" kısmından veri çıkartırız.
İlk giren ilk çıkar. (FIFO , first in first out yada first come first served)
Kod:
class Queue:
def __init__(self):
"""
initialize (constructor)
"""
self.items = []
def isEmpty(self):
"""
bos olup olmadigini kontrol et
"""
return self.items == [] # bool operation
def enqueue(self,item):
"""
queue item ekler
"""
self.items.insert(0,item)
def dequeue(self):
"""
queue dan item cikartir
"""
return self.items.pop()
def size(self):
"""
length of items(queue)
"""
return len(self.items)
Kod:
depo2 = Queue()
depo2.isEmpty()
Out[42]: True
depo2.enqueue("Firt Index")
depo2.size()
Out[44]: 1
depo2.enqueue("Second Index")
depo2.size()
Out[46]: 2
depo2.dequeue()
Out[47]: 'Firt Index'
depo2.size()
Out[48]: 1
Son düzenleme: