模拟栈数据结构
要求:
1、这个栈可以存储java中的任何引用类型的数据。
2、在栈中提供push方法模拟压栈。(栈满了,要有提示信息。)
3、在栈中提供pop方法模拟弹栈。(栈空了,也要有提示信息。)
4、编写测试程序,new栈对象,调用push pop方法来模拟压栈弹栈的动作。
_
_
_
栈类
public class MyStack {
//这个栈可以存储java中任何引用数据类型,所以选用Object.
private Object[] elements;
//栈帧(永远指向栈顶部的元素)
private int index = -1;
//构造方法
public MyStack() {
//默认初始化容量为10
this.elements = new Object[10];
}
public MyStack(Object[][] elements) {
this.elements = elements;
}
//setter and getter
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;
}
//push方法(压栈)
public void push(Object obj){
if(index >= elements.length - 1){
System.out.println("栈已满,压栈失败");
return;
}
this.index++;
this.elements[index] = obj;
System.out.println("压栈" + obj + "成功" + "栈帧指向" + this.index);
}
//poo方法(弹栈)
public void pop(){
if(index <= -1){
System.out.println("栈已空,弹栈失败");
return;
}
System.out.print("弹栈" + elements[index] + "成功");
index--;
System.out.println("栈帧指向" + index);
}
}
测试类
public class MyStackTest {
public static void main(String[] args) {
//默认初始化容量为10
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());
ms.push(new Object());
ms.push(new Object());
ms.push(new Object());
ms.push(new Object());
//栈已满,压栈失败
ms.push(new Object());
//弹栈java.lang.Object@cc34f4d成功栈帧指向8
ms.pop();
}
}
复习一下一维数组
纯手打
如有错误,请大佬指出,谢谢啦!