4. Hafta: Yığınlar (Stacks) ve LIFO Mimarisi
📊 Ders Sunumu ve Slaytlar
Ders sunumunu tarayıcıda doğrudan inceleyebilir veya indirebilirsiniz.
🥞 Yığın (Stack) Mantığı: LIFO
Yığın, eleman ekleme ve çıkarma işlemlerinin yalnızca tek bir uçtan (Top - Tepe / Üst) yapıldığı doğrusal bir veri yapısıdır. LIFO (Last In, First Out - Son Giren İlk Çıkar) ilkesine dayanır.
Temel İşlemler
push(item): Tepeye/üste yeni eleman ekler ($O(1)$).pop(): Tepedeki/üstteki elemanı yığından çıkarır ve döndürür ($O(1)$).peek()/top(): Tepedeki/üstteki elemanı çıkarmadan değerini okur ($O(1)$).is_empty(): Yığının boş olup olmadığını kontrol eder ($O(1)$).
🛠️ Gerçekleme: Python ile Stack Sınıfı
class Stack:
def __init__(self):
self._items = []
def push(self, item):
self._items.append(item)
def pop(self):
if self.is_empty():
raise IndexError("Stack boş!")
return self._items.pop()
def peek(self):
if self.is_empty():
raise IndexError("Stack boş!")
return self._items[-1]
def is_empty(self):
return len(self._items) == 0
💡 Pratik Uygulamalar
- Geri Al (Undo / Redo): Metin düzenleyicilerinde Ctrl+Z geçmişi.
- Çağrı Yığını (Call Stack): Fonksiyon çağrıları ve yerel değişkenlerin yönetimi.
- Dengeli Parantez Eşleme (Balanced Parentheses): Derleyicilerin sözdizimi kontrolü (
{[()]}).