logologo
Ai badge logo

Bu madde yapay zeka desteği ile üretilmiştir.

BlogGeçmiş
Blog
Avatar
Ana YazarSinan Turan7 Mayıs 2025 20:52

Yığın (Stack) Veri Yapısı

fav gif
Kaydet
viki star outline

Yığın (İngilizce: Stack), bilgisayar bilimlerinde yaygın olarak kullanılan temel veri yapılarından biridir. Elemanların yalnızca bir uçtan eklendiği ve çıkarıldığı bir veri yapısıdır. Bu uç, “üst” (top) olarak adlandırılır. Yığın yapısı, “son giren ilk çıkar” (Last In, First Out - LIFO) prensibine göre çalışır. Bu yapı, özellikle geri alma işlemleri, derleyici yapıları ve çağrı yığını gibi birçok sistemde kullanılır.

Günlük Hayattan Bir Yığın Örneği

Yığın veri yapısını daha iyi kavrayabilmek için günlük hayattan bir analoji ile açıklama yapılabilir. Örneğin, kitaplarınızı üst üste yerleştirmeniz gereken dar bir kutuya koyduğunuzu düşünün. Kutu, yalnızca bir kitabın genişliği kadar bir açıklığa sahiptir ve bu nedenle kitaplar yalnızca üst üste istiflenerek yerleştirilebilir (push işlemi). En son yerleştirilen kitap, kutunun en üstünde yer alır.


Daha sonra, ilk yerleştirdiğiniz kitaba ulaşmanız gerektiğini fark ettiğinizde, bu kitaba doğrudan erişiminizin olmadığını görürsünüz. Bu durumda, üstteki kitapları sırayla kutudan çıkarmanız (pop işlemi) gerekir. Yani, ilk yerleştirilen kitaba erişebilmek için son eklenenlerden başlayarak tüm kitapları tek tek kaldırmanız gerekir. Bu durum, yığın yapısının temel mantığı olan “son giren ilk çıkar” (LIFO) prensibini yansıtan basit ve sezgisel bir örnektir.


Yapay zeka yardımıyla oluşturulmuştur.

Temel İşlemler

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

  • Push (Ekleme): Yeni bir elemanı yığının en üstüne ekler.
  • Pop (Çıkarma): Yığının en üstündeki elemanı çıkarır ve döndürür.


Bunların dışında:

  • Peek/Top (Bakma): Yığının en üstündeki elemanı çıkarmadan görüntülemeye yarar.
  • isEmpty: Yığının boş olup olmadığını kontrol eder.
  • Size/Length: Yığındaki eleman sayısını verir.

Kullanım Alanları

Yığın veri yapısı, birçok uygulama alanında doğrudan veya dolaylı biçimde kullanılmaktadır. Bunlar arasında:

  • Fonksiyon çağrıları: Modern programlama dillerinde fonksiyon çağrıları ve geri dönüşler yığın yapısı kullanılarak yönetilir.
  • Geri alma (undo-redo) işlemleri: Metin düzenleyiciler ve grafik tasarım programlarında yapılan işlemleri geri almak için yığın kullanılır.
  • Parantez dengeleme: Derleyicilerde veya sözdizimi kontrolünde, açılıp kapanan karakterlerin doğru eşleşmesini kontrol etmek için kullanılır.
  • Derleyici analizleri: Özellikle özyineli ifadeler, ifade değerlendirme ve postfix (ters Polonyalı gösterim) gibi hesaplamalarda tercih edilir.

Yığınların Uygulanması

Yığın veri yapısı farklı biçimlerde uygulanabilir:

  • Dizi (Array) ile Uygulama: Sabit boyutlu bir dizi kullanılarak yığın işlemleri gerçekleştirilir. Hafıza sınırları önceden belirlenmiş olur.
  • Bağlı liste (Linked List) ile Uygulama: Dinamik bir yapı sunar. Bellek kullanımı daha esnektir; ancak ek yapısal alanlara ihtiyaç duyar.

Örnek Kod (Basit Yığın Sınıfı – Java)

public class Stack {
    private int maxSize;
    private int top;
    private int[] stackArray;
    public Stack(int size) {
        maxSize = size;
        stackArray = new int[maxSize];
        top = -1;
    }
    public void push(int value) {
        if (top < maxSize - 1)
            stackArray[++top] = value;
    }
    public int pop() {
        if (top >= 0)
            return stackArray[top--];
        return -1;
    }
    public int peek() {
        if (top >= 0)
            return stackArray[top];
        return -1;
    }
    public boolean isEmpty() {
        return top == -1;
    }
}

Avantajlar ve Dezavantajlar

  • Avantajlar: Uygulaması basittir, bellek yönetimi belirli işlemler için kolaylaşır.
  • Dezavantajlar: Yalnızca son giren elemana erişim sağlar. Rastgele erişim imkânı sunmaz.


Netice olarak yığın, bilgisayar bilimlerinde temel veri yapılarından biri olup, çok sayıda algoritma ve sistemin altyapısını oluşturan önemli bir yapı taşını temsil eder. Kendi içinde basit kurallara sahip olmasına rağmen, sağladığı işlevsellik sayesinde farklı birçok alanda kullanılır.

Kaynakça

“Stack Data Structure.” GeeksforGeeks. Erişim 7 Mayıs 2025. https://www.geeksforgeeks.org/stack-data-structure/.


"5. Veri Yapıları-Python 3.13.3 Belgelendirmesi." Python Software Foundation. Erişim 7 Mayıs 2025. https://docs.python.org/tr/3/tutorial/datastructures.html.


“C# Why Should I Limit Myself to List or Stack? (Instead of Having Both).” Software Engineering Stack Exchange. Erişim 7 Mayıs 2025. https://softwareengineering.stackexchange.com/questions/403328/c-why-should-i-limit-myself-to-list-or-stack-instead-of-having-both.


“Yığın (Stack) Veri Yapısı.” Web3 Öğren.Erişim 7 Mayıs 2025. https://web3ogren.com/docs/pseudo/veri%20yap%C4%B1lar%C4%B1/stack/.

Sen de Değerlendir!

0 Değerlendirme

Blog İşlemleri

KÜRE'ye Sor