算法第四版 P84定容栈 FixedCapacityStackOfStrings的算法实现

题目

简单版本的实现栈(LIFO)后进先出

JAVA代码

package book1_3;

/**
 * @description: ${description}
 * @create: 2019-02-16
 * FixedCapacityStackOfStrings(int cap)
 * void push(String item)
 * String pop()
 * boolean isEmpty()
 * int size()
 * param:
 * 1.String[] a
 * 2.size
 **/
public class FixedCapacityStackOfStrings {
    private String[] a;
    private int n=0;

    public FixedCapacityStackOfStrings(int capacity) {
        a=new String[capacity];
    }
    public void push(String item){
        //a[n++]=item
        a[n]=item;
        n++;
    }
    public String pop(){
        //return a[--m]
        n=n-1;
        return a[n];
    }
    public boolean isEmpty(){
        return n==0;
    }
    public int size(){
        return n;
    }

    public static void fnPrint(String exp){
        String[] split = exp.split(" ");
        FixedCapacityStackOfStrings f=new FixedCapacityStackOfStrings(20);
        for (String s:split) {
            //这里要多判断一下,f函数的成员变量n是否为零.如果为零,则说明数组里面没东西了,不能用pop()去取数据,否则则会报错
            if(s.equals("-") && !f.isEmpty()){
                String pop = f.pop();//取数据的前提是:数组里面还有数据才可以
                System.out.println(pop);
            }else{
                f.push(s);
            }
        }
        System.out.println("-----------------end-------------------");
        System.out.println(f.size()+" left on stack ");

    }

    public static void main(String[] args) {
        String exp="to be or not to - be - - that - - - is";
        fnPrint(exp);
    }
}

运行结果

在这里插入图片描述

心得

优点:
1.栈的乞丐版本
2.push和pop和栈的长度无关
缺点:
1.不支持各种类型的(泛型);
2.数组大小被写死了.没办法动态的改变
3.对象游离了没有被回收
4.不支持迭代

改进版本:算法1.1 下压栈 能够动态调整数组大小

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值