Реализация стека - PullRequest
       2

Реализация стека

0 голосов
/ 31 мая 2018

Я запутался с этой реализацией 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}.

Как с этим справиться?Мой метод удаления работает нормально, но добавление выглядит не очень хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...