这是一个创建于 1777 天前的主题,其中的信息可能已经有所发展或是发生改变。
这是一个关于老板精明卖货的故事。
一、仓库与门店
话说李老板有一个门店,用来做零售。
还有一个小仓库,虽然面积不大,但好在离门店近,还能存点东西。
二、进货
每当进货的时候,商品要先存储到仓库。
由于仓库又深又窄,容量还小,只能先进后出。
后果是,旧的货全堆在最深处,如果过期了那可是要亏大本的啊!!
这可要命,李老板有点愁眉苦脸的 &<&
三、销售
门店和仓库类似,货架又深又窄,容量倒还挺大,也只能先进后出。
门店刚开始的时候,一件商品都没有。
好在门店离仓库很近,商品只要一件件人肉搬过来就可以了。
于是,李老板开始动手...
说来这李老板还有点小聪明,为了不亏本,想出了一个好办法:
每当门店商品卖完,货架空了。就把仓库的货全搬过来,按顺序一件件推进上货架。
这样,新的货总是摆放在货架的最里面,而旧的货总是摆放在最外面。
于是,旧货可以先卖,商品不容易过期,老板甚是开心啊 ^_^
第一个栈:仓库,负责入库存储
第二个栈:货架,等待销售
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
|
|
1
Xs0ul 2020-02-15 02:13:30 +08:00
看到"先进后出"就发现不对
|