堆栈的实现

时间:2018-05-31 19:29:20

标签: python data-structures

我对这个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}

我该如何处理?我的删除方法工作正常,但添加似乎不太好。

0 个答案:

没有答案