コード例 #1
0
ファイル: linked_lists.py プロジェクト: taras-zak/algorithms
 def dequeue(self):
     if self.is_empty():
         raise Empty('Queue empty')
     oldhead = self._tail._next
     if self._size == 1:
         self._tail = None
     else:
         self._tail._next = oldhead._next
     self._size -= 1
     return oldhead._data
コード例 #2
0
    def delete_last(self):
        """Remove and return the rear element of the deque

        Raise Empty exception if the deque is empty
        """
        if self.is_empty():
            raise Empty('Deque is empty')

        back = (self._front + self._size - 1) % len(self._data)
        item = self._data[back]
        self._data[back] = None
        self._size -= 1

        if 0 < self._size < len(self._data) // 4:
            self._resize(len(self._data) // 2)
        return item
コード例 #3
0
    def dequeue(self):
        """Remove and return the first element of the queue (i.e., FIFO)

        Raise Empty exception if the queue is empty
        """
        if self.is_empty():
            raise Empty('Queue is empty')

        item = self._data[self._front]
        self._data[self._front] = None
        self._front = (self._front + 1) % len(self._data)
        self._size -= 1

        if 0 < self._size < len(self._data) // 4:
            self._resize(len(self._data) // 2)
        return item
コード例 #4
0
    def last(self):
        if self.is_empty():
            raise Empty('Deque is empty')

        back = (self._front + self._size - 1) % len(self._data)
        return self._data[back]
コード例 #5
0
 def delete_first(self):
     if self.is_empty():
         raise Empty('Deque is empty')
     return super().dequeue()
コード例 #6
0
ファイル: linked_lists.py プロジェクト: taras-zak/algorithms
 def first(self):
     if self.is_empty():
         raise Empty('Queue empty')
     head = self._tail._next
     return head._data
コード例 #7
0
 def _transfer(self):
     while not self._push_stack.is_empty():
         item = self._push_stack.pop()
         self._pop_stack.push(item)
     if self._pop_stack.is_empty():
         raise Empty('Queue is empty')
コード例 #8
0
 def first(self):
     if self.is_empty():
         raise Empty('Queue is empty')
     return self._data[self._front]
コード例 #9
0
ファイル: stack.py プロジェクト: taras-zak/algorithms
 def pop(self):
     if self.is_empty():
         raise Empty('Stack is empty')
     return self._data.pop()
コード例 #10
0
ファイル: stack.py プロジェクト: taras-zak/algorithms
 def top(self):
     if self.is_empty():
         raise Empty('Stack is empty')
     return self._data.head.data