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, botów: 0