Руководство с первого класса - Doublylinkedlist - PullRequest
0 голосов
/ 20 сентября 2019

Я начинаю использовать классы в Python, у нас есть домашнее задание, но нет шансов проверить, правильно ли мы это делаем.Как я могу впервые рассмотреть вопрос, имеет ли смысл то, что я делаю?И в конечном итоге помочь с завершением кода для некоторых функций?

Я добавлю свой код (для двусвязного списка классов мы должны заполнить код для всех функций, я сделал столько, сколько мог)

class DoublyLinkedList:
    """Implements a doubly linked list object"""

    def __init__(self):
        """Create an empty doubly linked list"""
        self.__size = 0
        self.__header = Node('Header')
        self.__trailer = Node('Trailer')
        self.__header.set_next(self.__trailer)
        self.__trailer.set_previous(self.__header)
        self.__current = None

    def __str__(self):
        """Return string representation of doubly linked list"""
        list_as_str = \
        '-'.join([str(node.get_data()) for node in self] if not self.is_empty() else '')
        return 'H-' + list_as_str + '-T'

    def __iter__(self):
        """Standard python iterator protocol method"""
        self.__current = self.get_first()
        return self

    def __next__(self):
        """Standard python iterator protocol method"""
        if self.__current == self.__trailer:
            raise StopIteration()
        result = self.__current
        self.__current = self.__current.get_next()
        return result

    def get_previous(self, node):
        """Returns the node before the given node"""
        if node is None:
            return None
        else:
            newnode = node.get_previous()
            return newnode

            # YOUR CODE HERE
            raise NotImplementedError()

    def get_next(self, node):
        """Returns the node after the given node"""
        if node is None:
            return None
        else:
            newnode = node.get_next()
            return newnode
            # YOUR CODE HERE
            raise NotImplementedError()

    def get_size(self):
        """Return the number of elements in the list"""
        size = self.__size
        return size
        # YOUR CODE HERE
        raise NotImplementedError()

    def get_first(self):
        """Get the first element of the list"""
        if self.__header is None:
            return None
        else:
            return self.__header
        # YOUR CODE HERE
        raise NotImplementedError()

    def get_last(self):
        """Get the last element of the list"""
        return self.__trailer
        # YOUR CODE HERE
        raise NotImplementedError()

    def is_empty(self):
        """Returns T|F list is empty"""
        # YOUR CODE HERE
        if self.__size = 0:
            return True
        else:
            return False
        raise NotImplementedError()

    def add_first(self, new_node):
        """Insert new node at the head of the list"""
        if self.__header is None:
            self.__header = Node(new_node)
        else:
            self.__current = Node(new_node)
            self.__header.set_previous(self.__current)
            self.__current.set_next(self.__header)
            self.__current = self.__header

        # YOUR CODE HERE
        raise NotImplementedError()

    def add_last(self, new_node):
        """Insert new node at the tail of the list"""

        # YOUR CODE HERE
        raise NotImplementedError()

    def remove(self, node):
        """Remove the given node from the list, return node"""
        # YOUR CODE HERE
        raise NotImplementedError()

    def search(self, key):
        """Return item by key, None if not found"""
        fnd = None
        # YOUR CODE HERE
        raise NotImplementedError()
        return fnd

    def smallest(self):
        """Return node with smallest value"""
        sml  = Node(float("inf"))
        # YOUR CODE HERE
        raise NotImplementedError()
        return sml


    def traverse(self, visitor):
        """Visit every element in the list, call visitor"""
        # YOUR CODE HERE
        raise NotImplementedError()

Это правильный способ сделать это?

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