商品货架可以看成一个栈,栈顶商品的生产日期最早,栈底商品的生产日期最近。上货时,需要倒货架,以保证生产日期较近的商品在较下的位置。 [基本要求] 针对一种特定商品,实现上述管理过程。货架信息从文件中读取,上货后在输出至文件和屏幕。 [实现提示] 用栈模拟货架和周转空间。 [测试数据] 注意测试边界数据,如空栈。
时间: 2024-01-24 12:17:15 浏览: 147
以下是一个基于 Python 的实现,实现了从文件中读取货架信息、上货、输出至文件和屏幕的基本功能:
```python
class Shelf:
def __init__(self):
self.stack = []
def push(self, item):
self.stack.append(item)
def pop(self):
if not self.stack:
return None
return self.stack.pop()
def top(self):
if not self.stack:
return None
return self.stack[-1]
def is_empty(self):
return not bool(self.stack)
def __str__(self):
return str(self.stack)
def load_shelf(filename):
shelf = Shelf()
with open(filename, 'r') as f:
for line in f:
shelf.push(line.strip())
return shelf
def save_shelf(shelf, filename):
with open(filename, 'w') as f:
while not shelf.is_empty():
item = shelf.pop()
f.write(item + '\n')
def print_shelf(shelf):
print('Shelf contents:')
while not shelf.is_empty():
item = shelf.pop()
print(item)
shelf.push(item)
def main():
filename = 'shelf.txt'
shelf = load_shelf(filename)
print_shelf(shelf)
print('---\nAdding new items...')
shelf.push('20220101')
shelf.push('20220102')
shelf.push('20220103')
save_shelf(shelf, filename)
print('---\nUpdated shelf:')
print_shelf(shelf)
if __name__ == '__main__':
main()
```
在该实现中,我们定义了一个 `Shelf` 类来模拟货架,使用一个列表来实现栈的功能。`load_shelf` 函数从文件中读取货架信息,将每个商品的生产日期作为字符串依次压入栈中。`save_shelf` 函数将货架中的商品倒出来,并将它们依次输出至文件中。`print_shelf` 函数与 `save_shelf` 类似,不同之处在于它将商品输出至屏幕中。最后,在程序的 `main` 函数中,我们演示了上货的过程,并输出了货架的最终状态。
需要注意的一点是,在实际应用中,我们可能需要将 `Shelf` 类进行改进,以支持更多的操作,例如查询某个日期的商品在哪个位置、按照特定规则排序商品等。
阅读全文