4.4 Yığınlar (Stacks)

C++ dilinde yığın (stack), verileri LIFO (Last In, First Out - Son Giren İlk Çıkar) mantığıyla saklayan bir veri yapısıdır. Yığın yapısı, verilerin son giren elemanın ilk olarak çıkarıldığı bir düzen sağlar. Yığınlar genellikle geçici veri saklama, geri alma işlemleri (undo), fonksiyon çağrıları ve diğer birçok durumda kullanılır.

Yığınların Temel Özellikleri

  1. LIFO Yapısı: Yığınlarda son eklenen eleman, ilk çıkarılan elemandır. Bu yapı, yığınların temel işleyiş prensibidir.

  2. İki Temel İşlem: Yığınlar genellikle iki temel işlemle çalışır:

    • Push: Yığına bir eleman eklemek.

    • Pop: Yığından bir eleman çıkarmak.

  3. En Üstteki Elemanı Görme: Yığındaki en üstteki elemanı görmek için kullanılan bir işlem vardır, bu işleme Topdenir. Ancak bu işlem yığından herhangi bir elemanı çıkarmaz.

Yığınların Kullanımı

C++'ta yığınlar, #include <stack> ifadesi ile kullanılmaya başlanır. Aşağıda yığınların temel kullanımını gösteren örnekler bulunmaktadır.

Yığın Oluşturma ve Eleman Ekleme

#include <iostream>
#include <stack>

int main() {
    // Yığın oluşturma
    std::stack<int> yigin;

    // Eleman ekleme
    yigin.push(10);
    yigin.push(20);
    yigin.push(30);

    // En üstteki elemanı yazdırma
    std::cout << "Yığındaki en üstteki eleman: " << yigin.top() << std::endl;

    return 0;
}

Eleman Çıkarma

Yığından eleman çıkarmak için pop() fonksiyonu kullanılır.

#include <iostream>
#include <stack>

int main() {
    // Yığın oluşturma
    std::stack<int> yigin;
    yigin.push(10);
    yigin.push(20);
    yigin.push(30);

    // Yığından eleman çıkarma
    std::cout << "Yığından çıkarılan eleman: " << yigin.top() << std::endl;
    yigin.pop(); // En üstteki elemanı çıkar

    std::cout << "Yeni en üstteki eleman: " << yigin.top() << std::endl;

    return 0;
}

Yığın Boş Mu Kontrolü

Yığının boş olup olmadığını kontrol etmek için empty() fonksiyonu kullanılabilir.

#include <iostream>
#include <stack>

int main() {
    // Yığın oluşturma
    std::stack<int> yigin;

    // Yığının boş olup olmadığını kontrol etme
    if (yigin.empty()) {
        std::cout << "Yığın boştur." << std::endl;
    } else {
        std::cout << "Yığın doludur." << std::endl;
    }

    return 0;
}

Sonuç

C++ yığınları, verileri LIFO düzenine göre saklamanın etkili bir yolunu sunar. Yığınlar, eleman ekleme, çıkarma ve en üstteki elemanı görme gibi basit ama etkili işlemlerle çalışır.

Last updated