我对这个Stack
实现(ADT)感到困惑。主要是添加和删除选项,还可以使用空字典,而不是空列表。
这是我的问题:
通过使用空列表,删除和添加实现是可以理解的:
class Stack:
def __init__(self):
self.elements = []
def add(self, item):
self.elements.append(item)
def remove(self):
self.elements.pop()
但是,我把这些实现混淆为空字典:
class D:
def __init__(self):
self.elements = {}
self.index = 0 # since only adding one element per add method
# better to use indexing for key1, then key2
def add(self, item):
# For dictionary better to use
# self.elements[item] = new_item
# but in stack we adding one element
self.elements[item] = self.index
self.index = item
def remove(self):
self.elements.pop(self.index)
对于这段代码,我想在添加两个元素后创建新词典:
例如我们add(7)
,add(8)
,我们得到{7:8}
。但相反,在添加了更多元素后,例如add(9)
和add(10)
,我得到{7:8}
,{8:9}
,{9:10}
。
我该如何处理?我的删除方法工作正常,但添加似乎不太好。