java代码实现栈
这几天在老家有点事,现在弄完了,继续研究一下数据结构,这次的栈并没有对多线程进行优化,如果有想优化的童鞋可以参考我上一篇文章对队列进行的优化,话不多说,上代码:
package com.voole.cn; /** * @Description 这是一个数组实现的栈 * @author TMAC-J * */ public class StackByArray { /** * 储存元素的数组 */ private Object[] array = null; /** * 定义数组大小 */ private int size = 0; /** * 定义当前数组大小 */ private int currentSize = 0; /** * 定义指针 */ private int point = -1; /** * 构造方法 */ public StackByArray(int size){ this.size = size; array = new Object[size]; } /** * 入栈 */ public void push(Object data){ if(isFull()){ System.out.println("当前栈已满!"); return; } point++;//指针上移 array[point] = data; currentSize++; System.out.println("插入一个元素"); } /** * 出栈 */ public void pop(){ if(isEmpty()){ System.out.println("当前栈为空!"); return; } array[point] = null; point--;//指针下移 currentSize--; System.out.println("删除一个元素"); } /** * 判断是否为满 */ public boolean isFull(){ if(currentSize>=size)return true; return false; } /** * 判断是否为空 */ public boolean isEmpty(){ if(currentSize<=0)return true; return false; } }
package com.voole.cn;
public class Test {
public static void main(String[] args) {
StackByArray sba = new StackByArray(10);
for(int i=0;i<10;i++){
sba.push(i);
}
for(int i=0;i<10;i++){
sba.pop();
}
}
}
输出的结果如下:
插入一个元素
插入一个元素
插入一个元素
插入一个元素
插入一个元素
插入一个元素
插入一个元素
插入一个元素
插入一个元素
插入一个元素
删除一个元素
删除一个元素
删除一个元素
删除一个元素
删除一个元素
删除一个元素
删除一个元素
删除一个元素
删除一个元素
删除一个元素