这是一个创建于 2086 天前的主题,其中的信息可能已经有所发展或是发生改变。
    
    
    
        
        这是一个关于老板精明卖货的故事。
一、仓库与门店
话说李老板有一个门店,用来做零售。
还有一个小仓库,虽然面积不大,但好在离门店近,还能存点东西。
二、进货
每当进货的时候,商品要先存储到仓库。
由于仓库又深又窄,容量还小,只能先进后出。
后果是,旧的货全堆在最深处,如果过期了那可是要亏大本的啊!!
这可要命,李老板有点愁眉苦脸的 &<&
三、销售
门店和仓库类似,货架又深又窄,容量倒还挺大,也只能先进后出。
门店刚开始的时候,一件商品都没有。
好在门店离仓库很近,商品只要一件件人肉搬过来就可以了。
于是,李老板开始动手...
说来这李老板还有点小聪明,为了不亏本,想出了一个好办法:
每当门店商品卖完,货架空了。就把仓库的货全搬过来,按顺序一件件推进上货架。
这样,新的货总是摆放在货架的最里面,而旧的货总是摆放在最外面。
于是,旧货可以先卖,商品不容易过期,老板甚是开心啊 ^_^
第一个栈:仓库,负责入库存储
第二个栈:货架,等待销售
class CQueue {
    // 用于入列,暂存数据,相当于仓库
    private LinkedList<Integer> warehouse;
    // 用于出列,为空则先从 warehouse 入列,再继续出列
    private LinkedList<Integer> queue;
    public CQueue() {
        warehouse = new LinkedList<>();
        queue = new LinkedList<>();
    }
    
    public void appendTail(int value) {
        warehouse.push(value);
    }
    
    public int deleteHead() {
        // 如果 queue 不为空,则直接 pop 后返回
        if (!queue.isEmpty()) {
            return queue.pop();
        }
        // 如果 queue 为空,则先将 warehouse 的所有数据倒进来
        while (!warehouse.isEmpty()) {
            queue.push(warehouse.pop());
        }
        // 若队列中没有元素,deleteHead 操作返回 -1 
        return queue.isEmpty() ? -1 : queue.pop();
    }
}
        
     
    
    
    
    
 
    1 条回复  •  2020-02-15 02:13:30 +08:00
     
    
    
        
        
        
        
            
                |  |  |      1Xs0ul      2020-02-15 02:13:30 +08:00 看到"先进后出"就发现不对     |