商品货架管理 【问题描述】 商品货架可以看成一个栈,栈顶商品的生产日期最早,栈底商品的生产日期最近。上货时,需要倒货架,以保证生产日期较近的商品在较下的位置。 【基本要求】 针对一种特定商品,实现上述管理过程。 【实现提示】 用两个栈模拟货架和周转空间。 【测试数据】 略,注意栈空和栈满的情况。生成代码
时间: 2024-02-06 21:11:25 浏览: 23
好的,以下是一个简单的 Python 实现,实现了上架、下架和查询货架上商品的操作,同时考虑了栈空和栈满的情况:
```python
class Shelf:
def __init__(self, capacity):
self.capacity = capacity # 货架容量
self.stack1 = [] # 货架栈
self.stack2 = [] # 周转空间栈
def push(self, item):
if len(self.stack1) == self.capacity:
print("Error: Shelf is full")
return False
while self.stack1 and self.stack1[-1] > item:
self.stack2.append(self.stack1.pop())
self.stack1.append(item)
while self.stack2:
self.stack1.append(self.stack2.pop())
return True
def pop(self):
if not self.stack1:
print("Error: Shelf is empty")
return None
return self.stack1.pop()
def top(self):
if not self.stack1:
print("Error: Shelf is empty")
return None
return self.stack1[-1]
```
其中,Shelf 类表示货架,初始化时需要指定货架容量。push 方法用于上架商品,pop 方法用于下架商品,top 方法用于查询货架上的商品。在 push 方法中,先判断货架是否已满,如果已满则返回 False;否则,将货架栈中生产日期晚于待上架商品的商品弹出,压入周转空间栈中,然后再将待上架商品压入货架栈顶。在 pop 和 top 方法中,同样需要判断货架是否为空,如果为空则返回 None。
测试代码可以按照以下方式进行:
```python
shelf = Shelf(5)
shelf.push(3)
shelf.push(1)
shelf.push(4)
shelf.push(2)
shelf.push(5)
shelf.push(6) # Error: Shelf is full
print(shelf.top()) # 1
shelf.pop()
print(shelf.top()) # 2
shelf.pop()
print(shelf.top()) # 3
shelf.pop()
print(shelf.top()) # 4
shelf.pop()
print(shelf.top()) # 5
shelf.pop()
print(shelf.top()) # Error: Shelf is empty
```
希望这个代码能够帮助到您!