Yığın Veri Yapısı: LIFO Prensibi, Çalışma Mantığı ve Uygulama Alanları - TEKNOLOJİ - BİLGİ MERKEZİ | Bilginin Merkezi

Yığın Veri Yapısı: LIFO Prensibi, Çalışma Mantığı ve Uygulama Alanları - TEKNOLOJİ - BİLGİ MERKEZİ | Bilginin Merkezi

Yığın Veri Yapısı: LIFO Prensibi, Çalışma Mantığı ve Uygulama Alanları


07 Ekim 2025

Yığın Veri Yapısı: LIFO Prensibi, Çalışma Mantığı ve Uygulama Alanları

Veri yapıları, bilgisayar biliminin temel taşlarından biridir ve verilerin düzenlenmesi, depolanması ve yönetilmesi için kullanılan özel formatlardır. Doğru veri yapısını seçmek, bir algoritmanın verimliliğini ve performansını önemli ölçüde etkileyebilir. Bu makalede, en temel ve yaygın kullanılan veri yapılarından biri olan yığınları (stacks) derinlemesine inceleyeceğiz. Yığınların ne olduğunu, nasıl çalıştığını, hangi prensiplere dayandığını ve gerçek dünya uygulamalarını örneklerle açıklayacağız.

Yığın (Stack) Nedir?

Yığın, doğrusal bir veri yapısıdır ve "Son Giren İlk Çıkar" (Last-In, First-Out - LIFO) prensibine göre çalışır. Bu prensip, yığına en son eklenen elemanın, yığından ilk çıkarılacak eleman olduğu anlamına gelir. Günlük hayattan bir örnek vermek gerekirse, üst üste dizilmiş tabakları düşünebiliriz. En üste konulan tabağı ilk önce alırsınız.

Yığının Temel İşlemleri

Yığın veri yapısında genellikle iki temel işlem bulunur:

  • Push (Ekleme): Yığının en üstüne yeni bir eleman ekleme işlemidir.
  • Pop (Çıkarma): Yığının en üstündeki elemanı çıkarma işlemidir.

Bu iki temel işlemin yanı sıra, yığınlarda sıklıkla kullanılan başka işlemler de vardır:

  • Peek (Göz Atma): Yığının en üstündeki elemana erişme (değerini okuma) işlemidir. Elemanı yığından çıkarmaz.
  • isEmpty (Boş mu?): Yığının boş olup olmadığını kontrol etme işlemidir.
  • isFull (Dolu mu?): Yığının dolu olup olmadığını kontrol etme işlemidir (genellikle sabit boyutlu yığınlarda kullanılır).
  • Size (Boyut): Yığındaki eleman sayısını döndürme işlemidir.

LIFO (Son Giren İlk Çıkar) Prensibi Nasıl Çalışır?

LIFO prensibi, yığının çalışma mantığının temelini oluşturur. Bu prensibe göre, yığına eklenen son eleman, yığından çıkarılan ilk eleman olur. Bir eleman yığına eklendiğinde, yığının en üstüne yerleşir ve diğer elemanların üzerine çıkar. Bir eleman yığından çıkarıldığında ise, yığının en üstündeki eleman çıkarılır ve alttaki elemanlar bir üst konuma gelir.

Bu prensibi daha iyi anlamak için bir örnek düşünelim: Bir yığına sırasıyla A, B ve C elemanlarını ekleyelim. Yığın şu şekilde görünecektir:

C (En Üst)BA (En Alt)

Şimdi yığından bir eleman çıkaralım (pop işlemi). Çıkarılacak eleman, en üstteki eleman olan C olacaktır. Yığın şu şekilde görünecektir:

B (En Üst)A (En Alt)

Bu örnek, LIFO prensibinin nasıl çalıştığını açıkça göstermektedir.

Yığınların Uygulama Alanları

Yığınlar, bilgisayar biliminde birçok farklı alanda yaygın olarak kullanılır. İşte yığınların en önemli uygulama alanlarından bazıları:

  • Fonksiyon Çağrıları: Bir programda bir fonksiyon çağrıldığında, fonksiyonun dönüş adresi, yerel değişkenleri ve parametreleri bir yığına (çağrı yığını - call stack) kaydedilir. Fonksiyon tamamlandığında, bu bilgiler yığından geri alınarak programın doğru noktadan devam etmesi sağlanır.
  • Geri Alma/İleri Alma (Undo/Redo) İşlemleri: Birçok uygulamada, kullanıcıların yaptığı işlemleri geri almalarına veya ileri almalarına olanak tanıyan özellikler bulunur. Bu özellikler genellikle yığınlar kullanılarak uygulanır. Her işlem, bir yığına kaydedilir ve geri alma işlemi yapıldığında, yığının en üstündeki işlem geri alınır.
  • İfade Değerlendirmesi: Matematiksel ifadelerin (örneğin, 2 + 3 * 4) bilgisayar tarafından değerlendirilmesi sırasında yığınlar kullanılır. Özellikle, infix (2 + 3 * 4), postfix (2 3 4 * +) ve prefix (+ 2 * 3 4) notasyonlarındaki ifadelerin değerlendirilmesinde yığınlar önemli bir rol oynar.
  • Derleyici Tasarımı: Derleyiciler, kaynak kodu makine koduna çevirirken yığınları kullanır. Örneğin, sözdizimi analizi (parsing) sırasında parantezlerin ve diğer yapıların doğru bir şekilde eşleştirilmesi için yığınlar kullanılır.
  • Bellek Yönetimi: Bazı bellek yönetim sistemlerinde (örneğin, otomatik bellek yönetimi - garbage collection), yığınlar kullanılarak aktif olan nesnelerin takibi yapılır.
  • Tarayıcı Geçmişi: Web tarayıcıları, ziyaret edilen web sayfalarını bir yığında tutar. Geri düğmesine basıldığında, yığının en üstündeki sayfa çıkarılır ve görüntülenir.
  • Ağ Protokolleri: TCP/IP gibi ağ protokollerinde, verilerin doğru sırada iletilmesi ve alınması için yığınlar kullanılabilir.

Yığınların Avantajları ve Dezavantajları

Yığın veri yapısının bazı avantajları ve dezavantajları şunlardır:

Avantajları:

  • Basit ve Anlaşılır: Yığın veri yapısı, anlaşılması ve uygulanması kolaydır.
  • Hızlı Erişim: Yığının en üstündeki elemana erişim (peek ve pop işlemleri) oldukça hızlıdır (genellikle O(1) zaman karmaşıklığına sahiptir).
  • Bellek Yönetimi: Otomatik bellek yönetimi için uygundur.

Dezavantajları:

  • Sınırlı Erişim: Yığının ortasındaki veya altındaki elemanlara doğrudan erişim mümkün değildir.
  • Sabit Boyut (Bazı Durumlarda): Sabit boyutlu yığınlarda, yığın dolduğunda yeni eleman eklemek mümkün olmayabilir (stack overflow).

Yığın Uygulama Örneği (Python)

Aşağıdaki Python kodu, bir yığın veri yapısının basit bir uygulamasını göstermektedir:

class Stack: def __init__(self): self.items = [] def push(self, item): self.items.append(item) def pop(self): if not self.is_empty(): return self.items.pop() else: return None # veya bir hata fırlatılabilir def peek(self): if not self.is_empty(): return self.items[-1] else: return None def is_empty(self): return len(self.items) == 0 def size(self): return len(self.items)# Örnek Kullanımstack = Stack()stack.push(10)stack.push(20)stack.push(30)print("Yığın Boyutu:", stack.size()) # Output: Yığın Boyutu: 3print("En Üstteki Eleman:", stack.peek()) # Output: En Üstteki Eleman: 30print("Çıkarılan Eleman:", stack.pop()) # Output: Çıkarılan Eleman: 30print("Yığın Boyutu:", stack.size()) # Output: Yığın Boyutu: 2

Sonuç

Yığınlar, bilgisayar biliminde önemli bir yere sahip olan temel bir veri yapısıdır. LIFO prensibiyle çalışmaları, birçok farklı problem için etkili çözümler sunmalarını sağlar. Fonksiyon çağrılarından ifade değerlendirmesine, geri alma işlemlerinden derleyici tasarımına kadar geniş bir uygulama yelpazesine sahiptirler. Bu makalede, yığınların ne olduğunu, nasıl çalıştığını, hangi prensiplere dayandığını ve gerçek dünya uygulamalarını örneklerle açıkladık. Umarım bu bilgiler, yığın veri yapısını daha iyi anlamanıza ve uygulamalarınızda kullanmanıza yardımcı olur.


Facebook X