Veri Yapıları: Yığın (Stack)
Giriş
Temel Java serisi için verdiğim aranın ardından, veri yapılarına, java dilini kullanarak devam ediyoruz.
Sıradaki yapımız yığınlar, yabancı kaynaklarda stack olarak geçer/bilinir.
Son giren ilk çıkar (lifo) diye adlandırılan bir işleyişe sahiptirler.
Hepimizin bildiği geri al (ctrl + z) gibi popüler işlevlerde kullanılabilirler.
Bağlı listeleri yatay olarak modellemiştik.
Yığınları da dikey bağlı listeler (diziler) gibi düşünebiliriz.
Tek farkları veri akışının sadece yukarıdan gerçekleştirilmesidir.
Şekiller ile aram daha iyidir diyenler için;
Kart destesi, üst üste koyulmuş kitaplar, tabaklar ve benzeri gibi gerçek hayattan örnekleri mevcuttur.
Yazılım tarafına geçtiğimizde ise dizileri veya bağlı listeleri kullanarak yığınlar oluşturulabilir.
Yığın yapısının kalıplaşmış/olmazsa olmaz belli başlı metodları vardır, bunlar (yabancı isimleri ile birlikte);
- ekle() (push()) − yığına eleman eklemek için kullanılacak metod.
- cikart() (pop()) − yığından en üstteki elemanı çıkartmak için kullanılacak metod.
- gozat() (peek()) − yığının en üst elemanını gönderen metod.
Uygulama
Kolay olması ve konunun yığından uzaklaşmamasını istediğim için dizi kullanarak int tipinde veriler tutan bir yığın uygulaması yapalım.
Eğer pratik yapmak hoşunuza gidiyorsa konuya biraz ısındıktan sonra bağlı listeler ile de denemeler yapmanızı öneririm.
Bağlı listelerde hep tek dosya üzerinden gitmiştik.
Fakat yığın yapımızı sınıf olarak tanımlayacağız böylece istediğimiz yer ve zamanda nesnelerini oluşturarak kullanabilme imkanımız olacak.
Uygulamamız yigin.java ve Main.java olmak üzere iki dosyadan oluşan bir konsol uygulaması olacak.
Sınıfımız;
1 | package com.isiksistem; |
Buradan itibaren metod-metod ilerleyelim.
Öncelikle yığınımızı oluşturmamıza yarayan yapıcı metodumuz;
1 | public yigin(int boyut) { |
Ekleme metodumuz;
1 | public void ekle(int deger) { |
Çıkartma metodumuz;
1 | public int cikart() { |
Gözatma metodumuz;
1 | public int gozat() { |
Son olarak yığını oluşturduğumuz ve testlerimizi yaptığımız ana dosyamız;
1 | package com.isiksistem; |
Nihai çıktımız şu şekilde oluyor;
1 | Ekleme ve Gözatma Testleri: |
Görüldüğü üzere listemiz tamamen boş olduğu zaman tepedeki elemana bakmak istediğimizde sınıfta tanımlamış olduğumuz Yığın Boş sıradışı durum mesajını gösterdi.
Böylelikle bu yazının da sonuna geldik. Sonraki yazıda görüşmek üzere.