Java - Genişleyen Stack Uygulaması
Bir önceki uygulamamızda sadece oluşturduğumuz nesnenin constructor'üne verdiğimiz değer sayısı kadar Stack'imizi oluşturuyorduk.Stack'de oluşan fazla değer ekleme durumunda " Stack dolu" uyarısını alıyorduk.Bir önceki uygulamaya buradan ulaşabilirsiniz.Önceki örneğimizi genişletilebilir bir Stack uygulaması olarak güncelleyelim.
interface IFStack { void push(int item); int pop(); } class ExpStack implements IFStack { private int stack[]; private int stackStatus; ExpStack(int size){ stack = new int[size]; stackStatus = -1; } public void push (int item){ if(stackStatus == stack.length-1){ int temp[] = new int[stack.length*2]; for(int i=0;i < stack.length;i++){ temp[i] = stack[i]; } stack = temp; stack[++stackStatus] = item; }else{ stack[++stackStatus] = item; } } public int pop(){ if(stackStatus<0){ System.out.println("Stack boş"); return 0; } else { return stack[stackStatus--]; } } } class StackDemo { public static void main(String args[]){ ExpStack myStack = new ExpStack (10); for(int i=1;i<12;i++) myStack.push(i); for(int i=1;i<12;i++){ System.out.println(myStack.pop()); } } }
Programın Çıktısı: 11 10 9 8 7 6 5 4 3 2 1Genişletmek için push methodu içerisinde bir önceki programda " Stack dolu " olarak yazdırdığımız bölüme bir oluşturduğumuz Stack boyutunun 2 katında yeni bir geçici dizi oluşturuyoruz ardından eski Stack dizisindeki elemanları buna aktarıp birebir atama yaptığımızda artık Stack sınıfımız 2 katı olarak genişletilmiş oluyor.Stack'e push işlemlerini ise yine buradan devam ettiriyoruz.
0 yorum :