人人都爱听故事,最好还能学到东西:我来讲讲李老板这精明鬼卖货的故事

2020-02-15 00:01:59 +08:00
 netty
这是一个关于老板精明卖货的故事。

一、仓库与门店

话说李老板有一个门店,用来做零售。
还有一个小仓库,虽然面积不大,但好在离门店近,还能存点东西。

二、进货

每当进货的时候,商品要先存储到仓库。
由于仓库又深又窄,容量还小,只能先进后出。

后果是,旧的货全堆在最深处,如果过期了那可是要亏大本的啊!!
这可要命,李老板有点愁眉苦脸的 &<&

三、销售

门店和仓库类似,货架又深又窄,容量倒还挺大,也只能先进后出。

门店刚开始的时候,一件商品都没有。
好在门店离仓库很近,商品只要一件件人肉搬过来就可以了。
于是,李老板开始动手...

说来这李老板还有点小聪明,为了不亏本,想出了一个好办法:
每当门店商品卖完,货架空了。就把仓库的货全搬过来,按顺序一件件推进上货架。
这样,新的货总是摆放在货架的最里面,而旧的货总是摆放在最外面。

于是,旧货可以先卖,商品不容易过期,老板甚是开心啊 ^_^

第一个栈:仓库,负责入库存储
第二个栈:货架,等待销售

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();
}
}
1543 次点击
所在节点    算法
1 条回复
Xs0ul
2020-02-15 02:13:30 +08:00
看到"先进后出"就发现不对

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/644677

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX