Yığınlarla çalışmak

Python'da Veri Yapıları ve Algoritmalar

Miriam Antona

Software Engineer

Yığınlar

  • LIFO: Last-In First-Out
    • En son eklenen öğe ilk çıkarılır

Bir kitap yığını.

Python'da Veri Yapıları ve Algoritmalar

Yığınlar

  • LIFO: Last-In First-Out
    • En son eklenen öğe her zaman ilk çıkarılır
  • Yalnızca üstten eklenir
    • Yığına push etme

Üste yeni bir kitap eklenmiş kitap yığını.

Python'da Veri Yapıları ve Algoritmalar

Yığınlar

  • LIFO: Last-In First-Out
    • En son eklenen öğe her zaman ilk çıkarılır
  • Yalnızca üstten eklenir
    • Yığına push etme
  • Yalnızca üstten alınır
    • Yığından pop etme

Üstten bir kitabın alındığı kitap yığını.

Python'da Veri Yapıları ve Algoritmalar

Yığınlar

  • LIFO: Last-In First-Out
    • En son eklenen öğe her zaman ilk çıkarılır
  • Yalnızca üstten eklenir
    • Yığına push etme
  • Yalnızca üstten çıkarılır
    • Yığından pop etme
  • Yalnızca son öğe okunur
    • Yığından peek etme

Üstteki kitabın kapağını gösteren okla bir kitap yığını.

Python'da Veri Yapıları ve Algoritmalar

Yığınlar - gerçek kullanım

  • Geri alma özelliği

Tek öğeli bir yığın.

Python'da Veri Yapıları ve Algoritmalar

Yığınlar - gerçek kullanım

  • Geri alma özelliği
    • her tuş vuruşunu push et

Üste yeni bir öğe eklenmiş yığın.

Python'da Veri Yapıları ve Algoritmalar

Yığınlar - gerçek kullanım

  • Geri alma özelliği
    • her tuş vuruşunu push et

Üste yeni bir öğe eklenmiş yığın.

Python'da Veri Yapıları ve Algoritmalar

Yığınlar - gerçek kullanım

  • Geri alma özelliği
    • her tuş vuruşunu push et

Üste yeni bir öğe eklenmiş yığın.

Python'da Veri Yapıları ve Algoritmalar

Yığınlar - gerçek kullanım

  • Geri alma özelliği
    • her tuş vuruşunu push et

Üste yeni bir öğe eklenmiş yığın.

Python'da Veri Yapıları ve Algoritmalar

Yığınlar - gerçek kullanım

  • Geri alma özelliği
    • her tuş vuruşunu push et
    • son tuş vuruşunu pop et

Üstten bir öğesi çıkarılmış yığın.

Python'da Veri Yapıları ve Algoritmalar

Yığınlar - gerçek kullanım

  • Sembol denetleyici: ( [ { } ] )
    • açılış sembollerini push et

Bir açılış sembolü olan yığın.

Python'da Veri Yapıları ve Algoritmalar

Yığınlar - gerçek kullanım

  • Sembol denetleyici: ( [ { } ] )
    • açılış sembollerini push et

Üste yeni bir açılış sembolü eklenmiş yığın.

Python'da Veri Yapıları ve Algoritmalar

Yığınlar - gerçek kullanım

  • Sembol denetleyici: ( [ { } ] )
    • açılış sembollerini push et

Üste yeni bir açılış sembolü eklenmiş yığın.

Python'da Veri Yapıları ve Algoritmalar

Yığınlar - gerçek kullanım

  • Sembol denetleyici: ( [ { } ] )
    • açılış sembollerini push et
    • kapanış sembolünü kontrol et

Açılış sembolleri ve "check "}""" sözcüğü bulunan bir yığın.

Python'da Veri Yapıları ve Algoritmalar

Yığınlar - gerçek kullanım

  • Sembol denetleyici: ( [ { } ] )
    • açılış sembollerini push et
    • kapanış sembolünü kontrol et
    • eşleşen açılış sembolünü pop et

Üstten bir açılış sembolü çıkarılmış yığın.

Python'da Veri Yapıları ve Algoritmalar

Yığınlar - gerçek kullanım

  • Fonksiyon çağrıları
    • bellek bloğunu push et
    • yürütme bitince pop et
Python'da Veri Yapıları ve Algoritmalar

Yığınlar - tek bağlı listelerle uygulama

Bağlı liste olarak gösterilen bir yığın.

class Node:
  def __init__(self,data):
    self.data = data
    self.next = None
Python'da Veri Yapıları ve Algoritmalar

Yığınlar - tek bağlı listelerle uygulama

Düğüm parçalarının adlarıyla bağlı liste olarak gösterilen bir yığın.

class Node:
  def __init__(self,data):
    self.data = data
    self.next = None
class Stack:
  def __init__(self):
    self.top = None
Python'da Veri Yapıları ve Algoritmalar

Yığınlar - tek bağlı listelerle uygulama

"TOP" sözcüğü yığının üstünü gösteren bağlı liste olarak bir yığın.

class Node:
  def __init__(self,data):
    self.data = data
    self.next = None
class Stack:
  def __init__(self):
    self.top = None
Python'da Veri Yapıları ve Algoritmalar

Yığınlar - push

Boş bir yığın ve öğeleri olan bir yığının gösterimi.

def push(self, data):




Python'da Veri Yapıları ve Algoritmalar

Yığınlar - push

Boş bir yığın ve yeni düğüm eklenecek olan öğeli bir yığın.

def push(self, data): 
  new_node = Node(data)

if self.top:
Python'da Veri Yapıları ve Algoritmalar

Yığınlar - push

Yeni düğümün yığının üstündeki öğeye bağlandığı boş ve öğeli yığın gösterimi.

def push(self, data): 
  new_node = Node(data)
  if self.top:

new_node.next = self.top
Python'da Veri Yapıları ve Algoritmalar

Yığınlar - push

Yeni düğümün eklendiği boş ve öğeli yığın gösterimi.

def push(self, data): 
  new_node = Node(data)
  if self.top:
    new_node.next = self.top
  self.top = new_node
Python'da Veri Yapıları ve Algoritmalar

Yığınlar - pop

def pop(self):

if self.top is None:
return None
else:

"TOP" sözcüğü üstteki düğümü gösteren bir yığın.

Python'da Veri Yapıları ve Algoritmalar

Yığınlar - pop

def pop(self):
  if self.top is None:
    return None
  else:
    popped_node = self.top



"popped_node" sözcüğü yığının üstündeki düğümü gösteren bir yığın.

Python'da Veri Yapıları ve Algoritmalar

Yığınlar - pop

def pop(self):
  if self.top is None:
    return None
  else:
    popped_node = self.top
    self.top = self.top.next


"popped_node" üstteki düğümü ve "TOP" ikinci düğümü gösteren bir yığın.

Python'da Veri Yapıları ve Algoritmalar

Yığınlar - pop

def pop(self):
  if self.top is None:
    return None
  else:
    popped_node = self.top
    self.top = self.top.next
    popped_node.next = None

"popped_node" yığından ayrılmış bir düğümü ve "TOP" üstteki düğümü gösteren bir yığın.

Python'da Veri Yapıları ve Algoritmalar

Yığınlar - pop

def pop(self):
  if self.top is None:
    return None
  else:
    popped_node = self.top
    self.top = self.top.next
    popped_node.next = None
    return popped_node.data 

"TOP" sözcüğü üstteki düğümü gösteren bir yığın.

Python'da Veri Yapıları ve Algoritmalar

Yığınlar - peek

def peek(self):

if self.top:
return self.top.data
else:
return None
Python'da Veri Yapıları ve Algoritmalar

Python'da LifoQueue

  • LifoQueue:
    • Python'ın queue modülü
    • yığın gibi davranır
import queue


my_book_stack = queue.LifoQueue(maxsize=0)
my_book_stack.put("The misunderstanding") my_book_stack.put("Persepolis") my_book_stack.put("1984")
print("The size is: ", my_book_stack.qsize())
The size is: 3
print(my_book_stack.get())
print(my_book_stack.get())
print(my_book_stack.get())
1984
Persepolis
The misunderstanding
print("Empty stack: ", my_book_stack.empty())
Empty stack: True
Python'da Veri Yapıları ve Algoritmalar

Hadi pratik yapalım!

Python'da Veri Yapıları ve Algoritmalar

Preparing Video For Download...