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();
}
}
}

 

输出的结果如下:

插入一个元素
插入一个元素
插入一个元素
插入一个元素
插入一个元素
插入一个元素
插入一个元素
插入一个元素
插入一个元素
插入一个元素
删除一个元素
删除一个元素
删除一个元素
删除一个元素
删除一个元素
删除一个元素
删除一个元素
删除一个元素
删除一个元素
删除一个元素

posted @ 2016-11-17 10:56  麦子TMAC  阅读(147)  评论(0编辑  收藏  举报