publicclassArrayStack{//栈的大小privateint maxSize;//数组类型的栈privateint[] stack;//栈顶所在的位置,默认情况下没有数据用-1表示,// top表示的不是栈中的元素而是,数组下标privateint top =-1;publicArrayStack(int maxSize){this.maxSize = maxSize;
stack =newint[maxSize];}//压栈//1、判断栈是否满了,如果满了则抛出异常,// 2、否则就先top++,因为栈从下往上,在增加一个元素时,// 需要先对top++,然后再讲值赋给,数组中的第top位置publicvoidpush(int value){if(isFull()){thrownewRuntimeException("this stack is full");}else{
top++;
stack[top]= value;}}//出栈//首先判断栈是否为空,如果为空则抛出异常,// 否则先将最顶端也就是top位置的元素赋值给一个变量,// 这时元素减少一个,索引top需要减1 top--publicintpop(){if(isEmpty()){thrownewRuntimeException("this stack is empty");}else{int value = stack[top];
top--;return value;}}//遍历栈中所有元素publicvoidlist(){if(isEmpty()){thrownewRuntimeException("this stack is empty,so can not get anything");}System.out.println("this stack's value bottom up ");for(int i : stack){System.out.println(i);}}//判断栈是否为空publicbooleanisEmpty(){returnthis.top ==-1;}//判断栈是否满了publicbooleanisFull(){returnthis.top ==this.maxSize -1;}//获取当前栈的大小publicintlength(){returnthis.top +1;}}