```
// "static void main" must be defined in a public class.
class MyStack {
//栈
private List<Integer> data; // store elements
//用动态数组初始化栈
public MyStack() {
data = new ArrayList<>();
}
//插入一个元素到栈顶,自动将元素添加到最后新的索引上
public void push(int x) {
data.add(x);
}
//看栈是否为空
public boolean isEmpty() {
return data.isEmpty();
}
//根据数组最后一个索引得到栈顶元素
public int top() {
return data.get(data.size() - 1);
}
public boolean pop() {
//为空,不能退栈
if (isEmpty()) {
return false;
}
//移除栈顶元素,为索引最后的元素
data.remove(data.size() - 1);
return true;
}
};
public class Main {
public static void main(String[] args) {
MyStack s = new MyStack();
s.push(1);
s.push(2);
s.push(3);
for (int i = 0; i < 4; ++i) {
if (!s.isEmpty()) {
//打印栈顶元素
System.out.println(s.top());
}
//弹出栈顶元素
System.out.println(s.pop());
}
}
}
```