Swift ile Veri Yapıları — Stack

cemal tüysüz
4 min readSep 26, 2022
https://logicmojo.com/

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

Stack veri yapısı, verileri bir collection gibi gruplamaya ve organize etmeye yarar. Çalışma yapısı ise son giren ilk çıkar (LIFO) mantığına dayanır. Bu mantığı bir örnek ile pekiştirelim :

Akrabalarınız için bir yemek verdiniz. Yemeklerinizi yediniz sohbetinizi ettiniz her şey çok güzel. Günün sonunda masadan her kalkan kişi tabağını setin üstüne koymak zorundadır. Amcanız, dayınız, teyzeniz ve doblosu olan bir enişteniz her biri kendilerine ait tabakları üst üste bırakıyorlar. Bu tabakları yıkamak istediğinizde ilk ulaşacağınız tabak en üstte yani yığına en son giren tabaktır.

Stack veri yapısının çalışma mantığı da bu örnekteki ile bire birdir. Bir yığın oluşturursunuz ve bu yığının içine elementlerinizi eklerseniz. Her yeni eklenen element en üstte yer alır ve element çıkarmak istediğinizde son eklediğinizden başlayarak ilerlersiniz.

Stack Veri Yapısının Günlük Hayatta Kullanımı

Bu veri yapısını swift ile oluşturmaya başlamadan evvel günlük hayatta kullanıldığı yerlere örnek vermek istiyorum. Bunun nedeni bir veri yapısının mantığı anlaşılabilir ama nerelerde veya ne için kullanıldığı, hangi problemlere çözüm olabileceği bazen akılda soru işareti olarak kalabiliyor.

Günlük hayatta kullandığınız mobil uygulamalarda ekranlar genellikle bir yığın mantığı ile yönetilirler. Açtığınız her yeni bir ekran yığına eklenir. Bir önceki ekrana geri dönmek istediğinizde aslında görünen ekranı destroy edip yığında yer alan bir önceki sayfayı yığının top kısmına almış oluyorsunuz.

Örneğin X sosyal medya uygulamasında anasayfa akışında geziyorsunuz ve karşılaştığınız Ahmet adlı kullanıcının profilini ziyaret etmek istediniz. Bu durumda Ahmet adlı kullanıcının profil sayfası yığına pushlanır.

Ahmet adlı kullanıcının profilinde önerilenler kısmında Mehmet adlı kullanıcının da hesabına rastladınız ve Mehmetin profiline ilerlediniz. Yığındaki son durum aşağıdaki gibi olacaktır.

Mehmet adlı kullanıcının profilini inceledikten sonra bir kere geri butonuna bastınız. Çalışan POP yapısı ile mehmet kullanıcısına ait profil ekranı yığından çıkarıldı ve ekranda Ahmeti görüyor oldunuz. Son durum aşağıdaki gibi olacaktır.

Bir kere daha basıldığında aynı mantık ile Anasayfaya ulaştınız. Örneğin Android işletim sistemlerinde anasayfa üzerinde bir kere daha geri butonuna bastığınızda sistem yığında başka bir sayfa bulamadığı için direkt olarak sistem ana menüsüne sizi yönlendiriyor olacaktır.

Swift ile Stack Yapısını oluşturalım

Stack yapısını oluşturabilmemiz için 2 farklı yol vardır. Bunlar array ve node olmak üzere ikiye ayrılır. Biz bu yazı da array kullanıyor olacağız. Öncelikli olarak generic yapıda olacak olan Stack sınıfımızı oluşturalım.

Stack

Sınıfımız içerisinde boş bir yapıcı methodumuz ve bir adet de array elemanımız bulunmakta. Verilerimizi bu array içerisinde tutuyor olacağız.

Debug

Şimdi de yapımızı print etmek istediğimizde bize yardımcı olacak olan CustomStringConvertible protocol yapısını kalıtım olarak sınıfımıza alalım. Bu yapı ile beraber yığını direkt print etmek istediğimizde bunu kolayca yapabiliyor olacağız.

Bu kısımda fark ettiyseniz array elemanlarını yazdırıyorken önce tersine çeviriyorum. Bunun nedeni son girenin en yukarıda yer alıyor olmasıdır.

Şimdi yapımıza ait PUSH ve POP fonksiyonlarını ekleyelim.

Push & Pop

Array yapısının hali hazırda var olan özelliklerini de kullanarak çok basit bir şekilde bu iki fonksiyonu yazdık. Şu anda Stack yapısının içermesi gereken temel fonksiyonlar hazır. Lakin siz isEmpty gibi fonksiyonlar da ekleyebilir bu yapının mantığını bozmadan özelleştirebilirsiniz.

Şimdi de yazdığımız yapıyı bir çalıştıralım.

Bu durumda elde etmemiz gereken sonuç aşağıdaki gibi olmalıdır.

Umarım yazı faydalı olmuştur. Başka bir yazıda görüşmek üzere sağlıcakla kalın :)

Kaynak

https://www.udemy.com/course/data-structures-and-algorithms-in-swift/

https://www.raywenderlich.com/books/data-structures-algorithms-in-swift/v4.0/chapters/4-stacks

--

--