编写一个商品货栈,保证每一次上货后,日期越近的越靠近货栈里侧
时间: 2024-10-17 20:09:52 浏览: 24
商品货栈管理,通过栈和队列对商品货栈的管理
为了编写这样一个商品货栈,我们可以创建一个名为`ItemStack`的类,其中包含商品的信息(如ID、名称、价格和日期),以及一些特殊的方法来管理这个按照日期排序的商品堆栈。这里是一个简单的Python实现:
```python
import heapq
class Item:
def __init__(self, id, name, price, date):
self.id = id
self.name = name
self.price = price
self.date = date
class DateOrderedStack:
def __init__(self):
self.items = []
self.by_date = []
def push(self, item):
heapq.heappush(self.by_date, (item.date, item))
self.items.append(item)
def pop(self):
if not self.is_empty():
return heapq.heappop(self.by_date)[1]
else:
raise IndexError("Stack is empty")
def is_empty(self):
return len(self.items) == 0
def peek(self):
if not self.is_empty():
return self.by_date[0][1]
else:
raise IndexError("Stack is empty")
# 使用示例
stack = DateOrderedStack()
item1 = Item(1, "商品A", 100, '2023-05-01')
item2 = Item(2, "商品B", 200, '2023-04-30')
stack.push(item2)
stack.push(item1)
print("栈顶商品:", stack.peek().name) # 输出: 商品B,因为它的日期更早
```
在这个实现中,我们利用了Python内置的heapq模块,它提供了一个最小堆数据结构,每次插入元素都会保持堆的特性(即堆顶总是最小值)。这样当我们从堆顶弹出元素时,就得到了日期最近的商品。
阅读全文