public class MyStack {
// 栈可以存放任意类型的数据,存到栈中即表示存到数组中
private Object[] elements;
// 栈帧,指向顶部元素
private int index;
/*
设置 set 和 get 方法
*/
public Object[] getElements() {
return elements;
}
public void setElements(Object[] elements) {
this.elements = elements;
}
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
/*
无参数的构造方法
*/
public MyStack() {
// 默认容量为 5
this.elements = new Object[5];
this.index = -1;
}
/*
有参数的构造方法
*/
public MyStack(Object[] elements) {
this.elements = elements;
}
/*
压栈方法
*/
public void push(Object obj){
if (this.index >= elements.length-1){
System.out.println("栈已满,压栈失败!");
return;
}
// this.index++;
this.elements[++index] = obj;
System.out.println("压入" + obj + "元素成功,栈帧指向:" + index);
}
/*
弹栈方法
*/
public void pop(){
if (this.index <= -1){
System.out.println("栈已空,弹栈失败!");
return;
}
System.out.print("弹出" + elements[index] + "成功,");
this.elements[index--] = null;
System.out.println("栈帧指向:" + index);
}
}
测试
public class Test {
public static void main(String[] args) {
MyStack ms = new MyStack();
ms.push(new Object());
ms.push(new Object());
ms.push(new Object());
ms.push(new Object());
ms.push(new Object());
ms.push(new Object()); // 这里栈满了
System.out.println("-------------------------------------------------------");
ms.pop();
ms.pop();
ms.pop();
ms.pop();
ms.pop();
ms.pop(); // 这里栈空了
}
}