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 :