-- Veri Yapıları

Array ile Stack İmplementasyonu

Array üzerine stack inşa ederken dikkat edilmesi gereken en önemli unsur arrayin boyutunun ne olduğudur.Örneğin zaten 2 elemana sahip bir 2 elemanlı arraye push yapılacaksa bu eleman eklenmeden önce arrayin boyutunun artırılması gerekir.Bu işlem şu şekilde yapılır;

  • Mevcut arrayin boyutunun 2 katında bir array oluşturulur.
  • Oluşturulan arraye, mevcut arrayin elemanları kopyalanır.
  • Mevcut array referansının yeni arrayi referans etmesi sağlanır.

Pop() işleminde de array boyutu kontrol edilir.Örneğin,Elimizde 8 elemanlı bir array olsun,5 kere pop() uygulayalım ve eleman sayısı 3’e düşsün.Geriye kalan 5 elemanlık yerin hafızada yer kaplamaması için array boyutu yarıya düşürülür.Bu işlem şu şekilde yapılır;

  • Array’in sahip olduğu eleman sayısı,arrayin boyutunun 4 te 1’inden küçük veya eşit ise mevcut arrayin boyutunun yarısında bir array oluşturulur.
  • Oluşturulan arraye,mevcut arrayin elemanları kopyalanır.
  • Mevcut array referansının yeni arrayi referans etmesi sağlanır.

Main metod aşağıdaki gibi olsun :

public static void main (String args[])throws ArrayIndexOutOfBoundsException{
        StackWithArray s = new StackWithArray();
        s.push(10);
        s.push(25);
        s.push(35);
        s.push(40);
        s.push(22);
        s.push(125);
        s.push(3123);
        s.push(312);
        s.print();
    }
}

Kod Çıktısı :

10 25 35 40 22 125 3123 312

Stack boyutu :

Stack boşken = 2;                           Stackte 10 varken = 2;                      Stackte 10,25 varken = 2;

Stackta 10,25,35 varken = 4;       Stackte 10,25,35,40 varken = 4;

Stackte 10,25,35,40,22 varken = 8;

Buna birde pop işlemi ekleyelim ve main method aşağıdaki gibi olsun :

public static void main (String args[])throws ArrayIndexOutOfBoundsException{
        StackWithArray s = new StackWithArray();
        s.push(10);
        s.push(25);
        s.push(35);
        s.push(40);
        s.push(22);
        s.push(125);
        s.push(3123);
        s.push(312);
        s.pop();
        s.pop();
        s.pop();
        s.pop();
        s.pop();
        s.pop();
        s.print();
    }
}

Çıktısı :

10 25

Stack boyutu dizide sadece 10 ve 25 kalana kadar 8 iken, 10 ve 25 kaldığı zaman 4 e düşürülür.Son 2 index’te eleman yoktur.

 

 

Yorum bırak

Yorum