C# Stack Class

Merhaba arkadaşlar,

Collections nesnelerini daha iyi anlamak için System.Collection isim alanında bulunan bazı arayüzleri uygulayarak kendi koleksiyon nesnelerimizi geliştirip işin mutfağında neler oluyor öğrenmeye çalışmıştık. System.Collection isim alanında bulunan arayüz ve koleksiyon tabanlı sınıflar ile ilgili serime burada ulaşabilirsiniz.

Bu yazımda .Net Platformunda hazır bulunan koleksiyon tabanlı Stack sınıfını inceleyeceğiz. Stack sınıfının özellikleri ve metotlarını ele alıp örnek üzerinde pekiştiriyor olacağız.

Stack kelimesinin tükçe karşılığı yığındır. Yığın ise bir şeyin üst üste birikmesiyle oluşan kümedir. Üst üste birikmiş çakıl taşlarını düşünebiliriz.

Stack sınıfı da birikmiş olan çakıl taşlarını kendi çalışma prensibine göre yöneten koleksiyon tabanlı bir sınıftır. Bu veri türü de bilgisayar bilimlerinde yığın olarak adlandırılır. Yığın ve benzeri veri gruplarının çalışma mantığı ise LIFO (Last In First Out) dur. Yani koleksiyona giren son eleman ilk çıkacak olan elemandır.

Stack sınıfı ICollection, IEnumerable ve ICloneable arayüzlerini uygulamaktadır.

Pop(), Push() ve Peek() gibi önemli metodları vardır.

  • Pop() metodu ile koleksiyona eklenen son eleman çıkarır ve değerini döner
  • Push(Object) metodu ile koleksiyona yeni bir eleman ekler
  • Peek() metodu ile koleksiyondan son elemanı alır ama silmez
https://tr.m.wikipedia.org/wiki/Dosya:Data_stack.svg

ArrayList gibi dinamik bir veri yapısı vardır. Yani Push() metodu ile yeni bir eleman eklendiğinde kapasite yetersiz ise 2 katına çıkar. Ayrıca Push metodu ile yığına istediğimiz türden eleman ekleyebiliriz.

Stack sınıfını oluşturmak için farklı yapıcı metotlar vardır.

Stack sınıfının metotları ve özellikleri

  • Stack sınıfının metot ve özelliklerine buradan daha detaylı bir şekilde ulaşabilirsiniz.

Yığındaki her bir elemana koleksiyon gibi erişmek istersek Stack sınıfının GetEnumerator() metodundan yararlanabiliriz.

Aynı zamanda foreach döngüsü ile koleksiyondaki her bir elemana erişebiliriz.

Stack sınıfının temel düzeyde metot ve özelliklerini ele aldık. Bu bilgiler ile Stack sınıfını kullanarak örnek bir uygulama yapıyor olacağız.

Senaryomuz aslında hepimizin sürekli kullandığı geri-al aksiyonu. Bilgisayarımızda yanlışlıkla yaptığımız ve geri alınabilme özelliği olan aksiyonları Ctrl + Z komutu ile eski haline geri alabiliriz. Bizde bu yapıya benzer bir yapıyı Stack sınıfı ile yapmaya çalışacağız. Elimizde birkaç işlem bilgisi olacak ve bu işlem bilgilerini Stack sınıfına ekleyip geri dönmek istediğimizde en son yaptığımız işleme dönebileceğiz. Bu sayede son eklenen işlem yığından ilk çıkan eleman olacak. Yani LIFO (Last in First Out) prensibini sağlamış olacağız.

Bu yazımda LIFO (Last in First Out) prensibi ile çalışan .Net Platformunda hazır bulunan koleksiyon tabanlı Stack (yığın) sınıfı hakkında edindiğim bilgileri paylaşmaya çalıştım. Umarım faydalı olmuştur.

Bir sonraki yazımda System.Collection isim alanında hazır bulunan koleksiyon tabanlı Queue sınıfını inceleyeceğiz. Bu sınıfın metot ve özelliklerine değinip örnek bir uygulama ile pekiştiriyor olacağız. Bir sonraki yazımda görüşmek üzere 🙂

Kaynaklar:

Her Yönüyle C# 7.0, Sefer Algan, Pusula Yayincilik

https://docs.microsoft.com/tr-tr/dotnet/api/system.collections.stack?view=netframework-4.8

https://docs.microsoft.com/tr-tr/dotnet/csharp/programming-guide/concepts/collections

Leave a Comment