Dizileri Kullanan Yığınlar (Stacks Using Arrays)

C++’da yığınlara başlarken, ilk olarak bir dizi kullanarak yığın oluşturmayı göreceğiz. Bu kodta, bir yığının ne olduğu ve neden ona ihtiyaç duyduğumuzla ilgili açıklamayı main() fonksiyonu içerisinde bulabilirsiniz. Ayrıca, yığın oluşturulurken structlardan faydalanılmıştır. Sorularınız olursa burdan sorabilirsiniz, kodu sayfada fazla yer kaplamaması için yazının devamına koydum.

#include <iostream>

using namespace std;
struct Stack
{
    int seviye;
    int dizi[20]; // En fazla 20 eleman alabilir.
    void create();
    int pop();
    void push(int eleman);
    bool isEmpty();
};

void Stack::create(){
    seviye = 0; // 0. seviyeden başlattık.
}

int Stack::pop(){
    return dizi[--seviye]; // Dizi[seviye] döndür ve sonra seviyeyi azalt.
}

void Stack::push(int eleman){
    dizi[seviye++] = eleman;
}

bool Stack::isEmpty(){
    return seviye == 0;
}

int main(int argc, char const *argv[])
{
    /* Yığınlar */
    // En basit veri yapısıdır.
    // Üst üste konulan kitaplar gibi düşünülebilir.
    // En üste koyduğumuz kitabı ilk alırız. Alttaki kitabı almak istiyorsak
    // en üstten başlayarak sırayla ona kadar ineriz. Buna son giren ilk çıkar
    // LIFO(last in first out) deniyor.
    // Son işlemlere sırayla ulaşmak (mesela tarayıcıdaki geçmiş menüsü), iç içe
    // blokları takip etmek gibi amaçlarla kullanılabilir.

    /* Ana fonksiyonlar */
    // push => Yığının en üstüne yeni eleman (örneğimizde kitap) ekler.
    // pop => En üstteki elemanı siler.
    // isEmpty => Yığının boş olup olmadığını söyler.
    // Bu biraz amele yöntem, daha temiz bir şekilde, esnek boyutlarla bunu çözmemiz lazım.
    // Bunu da Stacks with linked list ile yapacağız.

    Stack yigin;
    yigin.create();
    cout << "Boş mu diye bakıyoruz: " << yigin.isEmpty() << endl;
    cout << "push(10) İşlensin." << endl;
    yigin.push(10);
    cout << "push(213) İşlensin." << endl;
    yigin.push(213);
    cout << "pop() işlensin ve sonuç basılsın: " << yigin.pop() << endl;
    cout << "push(14320) İşlensin." << endl;
    yigin.push(14320);
    cout << "push(214323) İşlensin." << endl;
    yigin.push(214323);
    cout << "pop() işlensin ve sonuç basılsın: " << yigin.pop() << endl;
    cout << "Boş mu diye bakıyoruz: " << yigin.isEmpty() << endl;
    cout << "pop() işlensin ve sonuç basılsın: " << yigin.pop() << endl;
    cout << "Boş mu diye bakıyoruz: " << yigin.isEmpty() << endl;
    cout << "pop() işlensin ve sonuç basılsın: " << yigin.pop() << endl;
    cout << "Boş mu diye bakıyoruz: " << yigin.isEmpty() << endl;
    return 0;
}

İyi çalışmalar.

 
comments powered by Disqus