コード例 #1
0
    def insert(self, index, value):
        """Insert item by index.

        Args:
            index (int): index for insert
            value : value for insert

        Raises:
            CollectionIsEmptyExeption: if list is empty
            IndexError: if index is not valid
        """
        if self.is_empty:
            raise CollectionIsEmptyExeption(list_is_empty())
        if not self.index_valid(index):
            raise IndexError(index_out_of_range())
        if index == 0:
            self.push_front(value)
            return
        else:
            node = Node(value)
            previously = self._find_by(index - 1)
            node.next = previously.next
            previously.next = node

            self._size += 1
コード例 #2
0
    def dequeue(self):
        """Extract item from queue.

        Returns:
            item: top item from queue

        Raises:
            CollectionIsEmptyExeption: if queue is empty
        """
        if self._queue.is_empty:
            raise CollectionIsEmptyExeption(queue_is_empty())
        return self._queue.extract()
コード例 #3
0
    def pop(self):
        """Extract item from stack.

        Returns:
            item: top item from stack

        Raises:
            CollectionIsEmptyExeption: if stack is empty
        """
        if self.is_empty:
            raise CollectionIsEmptyExeption(stack_is_empty())
        return self._stack.extract()
コード例 #4
0
    def front(self):
        """Return (not extract) first item from list.

        Returns:
            item: first item from list

        Raises:
            CollectionIsEmptyExeption: if list is empty
        """
        if self.is_empty:
            raise CollectionIsEmptyExeption(list_is_empty())
        return self._head.data
コード例 #5
0
def pop(stack):
    """Extract item from stack.

    Args:
        stack: stack data structure (created by function make_stack())

    Returns:
        item: top item from stack

    Raises:
        CollectionIsEmptyExeption: if stack is empty
    """
    if is_empty(stack):
        raise CollectionIsEmptyExeption(stack_is_empty())
    return _extract(stack)
コード例 #6
0
    def dequeue(self):
        """Extract item from queue.

        Returns:
            item: top item from queue

        Raises:
            CollectionIsEmptyExeption: if queue is empty
        """
        if self._extract_stack.is_empty:
            while not self._put_stack.is_empty:
                self._extract_stack.push(self._put_stack.pop())
        if self._extract_stack.is_empty:
            raise CollectionIsEmptyExeption(queue_is_empty())
        return self._extract_stack.pop()
コード例 #7
0
    def pop_back(self):
        """Return (and extract) last item from list.

        Returns:
            last_item: last item from list

        Raises:
            CollectionIsEmptyExeption: if list is empty
        """
        if self.is_empty:
            raise CollectionIsEmptyExeption(list_is_empty())

        penultimate = self._find_by(self._size - 2)
        last = penultimate.next
        penultimate.next = None
        self._size -= 1

        return last.data
コード例 #8
0
    def pop_front(self):
        """Return (and extract) first item from list.

        Returns:
            first_element_data: first item from list

        Raises:
            CollectionIsEmptyExeption: if list is empty
        """
        if self.is_empty:
            raise CollectionIsEmptyExeption(list_is_empty())

        return_value = self._head.data

        self._head = self._head.next
        self._size -= 1

        return return_value
コード例 #9
0
    def value_at(self, index):
        """Return (not extract) item by index.

        Returns:
            item: item from list by index

        Args:
            index (int): index return item

        Raises:
            CollectionIsEmptyExeption: if list is empty
            IndexError: if index is not valid
        """
        if self.is_empty:
            raise CollectionIsEmptyExeption(list_is_empty())
        if not self.index_valid(index):
            raise IndexError(index_out_of_range())

        finded = self._find_by(index)
        return finded.data
コード例 #10
0
    def erase(self, index):
        """Remove element by index from list.

        Args:
            index (int): index of element for delete

        Raises:
            CollectionIsEmptyExeption: if list is empty
        """
        if self.is_empty:
            raise CollectionIsEmptyExeption(self._error_message)
        if index == 0:
            self.pop_front()
            return
        if index == self._size - 1:
            self.pop_back()
            return
        previous = self._find_by(index - 1)
        deleted = previous.next
        previous.next = deleted.next
        deleted.next = None

        self._size -= 1