package com.array;
/*
1、采用Object类型的数组,来模拟栈可以存储java中的任何引用类型的数据。
*/
public class MyStack {
private Object[] elements;
//栈帧,永远指向栈顶部元素
private int index;
public MyStack() {
//一维数组动态初始化
//默认初始化容量是10
this.elements = new Object[10];
//给index初始化
this.index = -1;
}
/**
* 压栈的方法
* @param obj 被压的元素
*/
public void push(Object obj){
if (index >= elements.length - 1){
System.out.println("压栈失败,栈已满!");
return;
}
//程序能够执行到这里,说明栈没满。
//向栈中加1个元素,栈帧向上移动一个位置。
index++;
elements[index] = obj;
System.out.println("压栈"+ obj +"元素成功,栈帧指向" + index);
}
/**
* 弹栈的方法,从数组中往外取元素。每取出一个元素,栈帧向下移动一位。
* @return
*/
/* public Object pop(){
if (index < 0){
System.out.println("弹栈失败,栈已空!");
return null;
}
return null;
}*/
public void pop(){
if (index < 0){
System.out.println("弹栈失败,栈已空!");
return ;
}
//程序能够执行到此处说明栈没有空。
System.out.print("弹栈"+ elements[index] +"元素成功");
//栈帧向下移动一位。
index--;
System.out.println("栈帧指向" + index);
}
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;
}
}
package com.array;
public class MyStackTest {
public static void main(String[] args) {
//创建一个栈对象,初始化一个容量是10个。
MyStack myStack = new MyStack();
//调用方法压栈
myStack.push(new Object());
myStack.push(new Object());
myStack.push(new Object());
myStack.push(new Object());
myStack.push(new Object());
myStack.push(new Object());
myStack.push(new Object());
myStack.push(new Object());
myStack.push(new Object());
myStack.push(new Object());//最后压入的。最先弹出来。(这才符合栈的数据结构。)
//压这个元素失败了。
myStack.push(new Object());
//弹栈
myStack.pop();
myStack.pop();
myStack.pop();
myStack.pop();
myStack.pop();
myStack.pop();
myStack.pop();
myStack.pop();
myStack.pop();
myStack.pop();
//栈空
myStack.pop();
}
}
Java中用数组模拟栈数据结构
最新推荐文章于 2024-08-22 23:06:05 发布