Stos-kopiowanie tablicy

0

public class Stack2 {
	
	 int top;
	 int [] stack;
	 int size;
	 int [] secondSize;
	public Stack2(int s) {
		size=s;
		stack=new int[size];
		top=-1;
	}
	public void check(){
		System.out.println("Sprawdzam!");
		double d=(double)top/(double)size;
		System.out.println(d);
		if(d>0.75){
			System.out.println("powyżej!");
			 stack = new int[size*2];
			for(int i=0;i<top;i++)
			  {
			   secondSize[i]=stack[i];
			  }
			 
			  for(int i=0;i<top;i++){
				  stack[i]=secondSize[i];
			  }
		}

	}
	public void push(int j){
		check();
		stack[++top]=j;
	}
	public int pop(){
		return stack[top--];
	}
	public int peek(){
		return stack[top];
	}
	public boolean isEmpty(){
		return (top==-1);	
	}
	public boolean isFull(){
		return(top==size);
	}
	public static void main(String[] args) {
			Stack2 st=new Stack2(10);
			System.out.println(st.top);
			System.out.println(st.size);
			st.push(12);
			st.push(12);
			st.push(12);
			st.push(12);
			st.push(12);
			st.push(12);
			st.push(12);
			st.push(12);
			st.push(12);
			
			
	}

}

Program ma zwiększać rozmiar stosu jeśli ten zostanie wypełniony w ponad 75% ale coś nie pyka, proszę o pomoc :)

0

Ale że niby co "nie pyka"?
Formatuje Ci się komputer, mama na Ciebie krzyczy czy co?

0

Polecam debuger, zwróć uwagę w którym momencie inicjalizujesz pomocniczą tablicę i kiedy z niej i do niej przepisujesz wartości.

0

stack = new int[size*2];
"Niszczysz" stos zanim go przepiszesz.

Zrob tak:
jezeli d>0.75
to
newStack = new int[2*oldSize];

for()...
newStack[i] = stack[i];

stack=newStack;

1 użytkowników online, w tym zalogowanych: 0, gości: 1