Java - Genişleyen Stack Uygulaması

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

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
1
Geniş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 :