🧩 2.5: Stack Algoritmaları ve Örnekler

Gerçek Hayat Problemleri ve Çözümler

1. Dengeli Parantez Kontrolü

Kod editörleri, parantezlerin doğru kapatılıp kapatılmadığını (Balanced Parentheses) Stack kullanarak kontrol eder.

Başlangıç: ( [ ] )
⬇️
Karakter Oku
⬇️
Açılış Parantezi?
Stack'e AT (Push)
Kapanış Parantezi?
Eşleşiyor mu?
⬇️
Evet
Stack'ten SİL
Hayır
HATA!
Python Kodu
def parantez_kontrol(ifade):
    stack = []
    eslesme = {')': '(', ']': '[', '}': '{'}
    
    for char in ifade:
        if char in "({[":
            stack.append(char)
        elif char in ")}]":
            if not stack: return False
            son_acilan = stack.pop()
            if son_acilan != eslesme[char]:
                return False
                
    return len(stack) == 0

print(f"((A+B))  -> {parantez_kontrol('((A+B))')}")
print(f"{{[A+B]}} -> {parantez_kontrol('{[A+B]}')}")
print(f"((A+B)   -> {parantez_kontrol('((A+B)')}")
print(f")A+B(    -> {parantez_kontrol(')A+B(')}")
Çıktı bekleniyor...

2. Undo / Redo (Geri Al / İleri Al)

Tarayıcıda veya Word'de "Geri Al" (Ctrl+Z) ve "İleri Al" (Ctrl+Y) işlemleri için İki Stack kullanılır.

Python Kodu
class Tarayici:
    def __init__(self):
        self.gecmis = []  # Undo Stack
        self.ileri = []   # Redo Stack
        self.aktif_sayfa = "Ana Sayfa"
        
    def git(self, url):
        self.gecmis.append(self.aktif_sayfa)
        self.aktif_sayfa = url
        self.ileri.clear()
        print(f"🌐 Gidildi: {url}")
        
    def geri(self):
        if not self.gecmis: return
        self.ileri.append(self.aktif_sayfa)
        self.aktif_sayfa = self.gecmis.pop()
        print(f"⬅️ Geri: {self.aktif_sayfa}")
        
    def ileri_git(self):
        if not self.ileri: return
        self.gecmis.append(self.aktif_sayfa)
        self.aktif_sayfa = self.ileri.pop()
        print(f"➡️ İleri: {self.aktif_sayfa}")

# Test
chrome = Tarayici()
chrome.git("google.com")
chrome.git("youtube.com")
chrome.geri()
chrome.ileri_git()
Çıktı bekleniyor...