代码如下:
package com.example.stack;
import lombok.Data;
public class StackTest01 {
public static void main(String[] args) {
ArrayStack stack =new ArrayStack(5);
stack.push(1);
stack.push(2);
stack.push(3);
stack.push(4);
System.out.println("--------------------");
stack.show();
stack.pop();
System.out.println("--------------------");
stack.show();
}
}
@Data
class ArrayStack {
private int maxSize;
private int top = -1;
private int[] stack;
/**
* 构造器
*
* @param maxSize
*/
public ArrayStack(int maxSize) {
this.maxSize = maxSize;
stack = new int[maxSize];
}
/**
* 判断栈是否满
*/
public boolean isFull() {
return top == maxSize - 1;
}
/**
* 判断栈是否为空
*/
public boolean isNull() {
return top == -1;
}
/**
* 入栈
*/
public void push(int value) {
/**
* 判断是否为空
*/
if (isFull()) {
System.out.println("栈已经满了");
return;
}
/**
* top加一
* 将值附在当前top位置
* 先进
*/
top++;
stack[top] = value;
}
/**
* 出栈
*/
public int pop() {
/**
* 判断是否为空
*/
if (isNull()) {
System.out.println("栈为空,无法取出");
throw new RuntimeException("栈为空");
}
/**
* 定义一个辅助变量
*/
int a = 0;
/**
* 将top位置的值给a
*/
a = stack[top];
/**
* 取出数据
*/
top--;
return a;
}
/**
* 显示栈中的所有数据
*/
public void show() {
if (isNull()) {
System.out.println("栈为空");
return;
}
/**
* 遍历栈中的数据
* 因为栈是先进后出
* 所以要从头部开始遍历
*/
for (int i = top; i >= 0; i--) {
System.out.println(i + "位置的值为:" + stack[i]);
}
}
}