Yığın Veri Yapısı
Bir yığın; LIFO (Last In First Out) prensibini takip eden linear yani doğrusal bir veri yapısıdır. Bu, yığının içine eklenmiş olan son öğenin ilk olarak çıkacağı anlamına gelir.
Yığın veri yapısını, birbiri üzerindeki tabak yığını olarak düşünebilirsiniz.
Burada:
* tabakların üzerine yenisini ekleyebilirsiniz,
* en üsteki tabağı kaldırabilirsiniz,
* ve eğer istiyorsanız dipdeki tabağı çıkarabilirsiniz. Bu örnek yığın veri yapısının tam olarak nasıl çalıştığını gösterir.
LIFO YIĞIN PRENSİBİ
Programlama terimlerinde, yığının tepesine bir öğe yerleştirmek "push" olarak ve bir öğeyi kaldırmak ya da çıkarmak ise "pop" olarak adlandırılır.
Yukarıdaki resimde 3 adlı öğe son olarak eklenmesine rağmen, ilk olarak çıkarılmış yani kaldırılmıştır. Bu, LİFO prensibinin tam olarak nasıl çalıştığını gösterir.
C, C++, Java, Python veya C# gibi herhangi bir programlama dilinde bir yığın geliştirebiliriz ve mantık hemen hemen aynıdır.
TEMEL YIĞIN İŞLEMLERİ
Bir yığın üzerinde farklı işlemler yapmamıza izin veren birkaç temel işlem vardır.
Push ===> Bir yığının tepesine bir öğe ekleyin
Pop ===> Bir yığının tepesinden bir öğe silin ya da kaldırın
IsEmpty ===> Yığının boş olup olmadığını kontrol edin
Peek ===> Silmeden tepedeki öğenin değerini elde edin.
YIĞIN VERİ YAPISININ ÇALIŞMASI
Süreç aşağıdaki gibi çalışır:
1- TOP adli bir işaretleyici yığın içerisindeki en üstte bulunan öğeyi izlemek veya takip etmek için kullanılır.
2- Yığın başlatıldığında değerini -1 e ayarlarız böylece yığının boş olup olmadığını TOP == -1 ile karşılaştırarak kontrol edebiliriz.
3- Yığına bir öğe ekleme konusunda, TOP değişkeninin değerini artırırız. TOP ile işaretlenen pozisyon içerisindeki yeni öğeyi yerleştiririz.
4- Yığından bir öğe çıkarmak konusunda ise TOP değişkeniyle işaretlenmiş öğeyi dönderir ve onun değerini azaltırız.
5- Ekleme işleminden önce, yığının zaten önceden dolu olup olmadığını kontrol ederiz
6- Çıkarma ya da eksiltme işleminden önce ise, yığının zaten önceden boş olup olmadığını kontrol ederiz.