Java - Stack Uygulaması

Perşembe, Mayıs 14, 2015 kustemura 0 Yorum


interface IFStack {
 void push(int item);
 int pop();
}
class Stack implements IFStack {
 private int stack[];
 private int stackStatus;
 Stack(int size){
  stack = new int[size];
  stackStatus = -1;
 }
 public void push (int item){
  if(stackStatus == stack.length-1){
   System.out.println("Stack dolu");
  }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[]){
  Stack myStack = new Stack (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ı :
Stack dolu
10
9
8
7
6
5
4
3
2
1
Stack boş
0

Stack sınıfımızın kaç elemanlı bir dizi olacağını constructorune verdiğimiz değer belirliyor.
stackStatus değişkenini başlangıçta -1 olarak ayarlıyoruz ki ilk değer atamasında dizinin 0'ın indisine değer atamasını yapmasını sağlıyoruz.push methodu için : stackStatus değişkeni stack dizisinin uzunluğundan 1 eksik durumda stack dizisi artık eleman alamaz durumda dolu oluyor.(Diziler'in indisleri 0'dan başladığı için -1 diyoruz )Ardından bu indise Constructor'e girilen argüman değerini item değişkeninden alıp deklare ediyoruz.
pop methodu için ise eğer stackStatus sıfırdan küçük ise stack dizisinin boş olduğunu belirtiyoruz , değilse de stack mantığında elemanları çekmek için postfix olarak azaltıp elemanı alıyoruz.
Burada Stack sınıfından oluşturduğumuz myStack nesnesi 10 elemanlı bir Stack dizisi tanımlar.11 eleman push etmeye çalıştığımızda "Stack dolu" uyarısı alırız , 10'dan fazla elemanı pop ettiğimizde ise Stack boş uyarısını alırız.

0 yorum :