栈的特点就是先进后出,栈顶top设为数组的最后一个元素,当栈空的时候top==-;当栈满的时候top等于数组长度-1,入栈就是top++,出栈就是top--;因为栈是先进后出,因此当我们遍历数组的时候需要逆向遍历。
代码如下:
public class Zhan {
private int maxsize;
private int top;
private int[] arr;
public Zhan(int maxsize){
this.maxsize=maxsize;
arr=new int[maxsize];
top=-1;
}
//判断栈为空
public boolean isEmpty(){
return top==-1;
}
//判断栈满
public boolean isFull(){
return top==maxsize-1;
}
//入栈
public void add(int date){
if (isFull()){
System.out.println("栈满,不能添加数组");
}else {
top++;
arr[top]=date;
}
}
//出栈
public int delete(){
if (isEmpty()){
System.out.println("栈空,无数据可出!");
return 0;
}else{
top--;
return arr[top];
}
}
//遍历
public void bianliprint(){
if (isEmpty()){
System.out.println("栈为空,无法打印!");
}else {
for (int i=top;i>=0;i--){
System.out.println(arr[i]);
}
}
}
栈的测试类:
public class ZhanTest {
public static void main(String[] args) {
Zhan z=new Zhan(4);
z.add(1);
z.add(2);
z.add(3);
z.add(4);
z.bianliprint();
}
运行结果如下: