基本数据结构——栈

  栈的特征是后进先出(last-in, first-out, LIFO)。栈上的插入操作称为压入(PUSH),删除操作称为弹出(POP)。

下面使用一个数组S[n]来实现一个最多容纳n个元素的栈。定义一个属性指向最新插入的元素。栈的操作代码如下:

public class Stack {
    
    private Object[] objs;
    private int pointTop = -1;    //指向最新插入的元素
    
    public Stack() {
    }
    
    public Stack(int n) {    //初始化数组的大小
        objs = new Object[n];
    }
    
    public boolean isEmpty() {
        if(pointTop == -1){
            return true;
        }
        return false;
    }
    
    public boolean isFull() {
        if(pointTop == objs.length-1){
            return true;
        }
        return false;
    }
    
    public boolean push(Object obj) {
        if(!isFull()){
            pointTop += 1;
            objs[pointTop] = obj;
            return true;
        }
        return false;
        
    }
    
    public Object pop() {
        if(isEmpty()){
            return -1;
        }else{
            pointTop = pointTop-1;
            return objs[pointTop+1];
        }
        
    }
    
    public static void main(String[] args) {
        Stack stack = new Stack(10);
        for(int i=0;i<5;i++){
            if(stack.push(i)){
                System.out.println(i);
            }
        }
        System.out.println();
        for(int i=0;i<5;i++){
            System.out.println(stack.pop());
        }
    }
    
}

运行结果:

0
1
2
3
4

4
3
2
1
0

转载于:https://www.cnblogs.com/ming-zi/p/6373040.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值