Я запутался с этой реализацией 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}
.
Как с этим справиться?Мой метод удаления работает нормально, но добавление выглядит не очень хорошо.