Exemple #1
0
 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
Exemple #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
Exemple #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
Exemple #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]
Exemple #5
0
 def delete_first(self):
     if self.is_empty():
         raise Empty('Deque is empty')
     return super().dequeue()
Exemple #6
0
 def first(self):
     if self.is_empty():
         raise Empty('Queue empty')
     head = self._tail._next
     return head._data
Exemple #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')
Exemple #8
0
 def first(self):
     if self.is_empty():
         raise Empty('Queue is empty')
     return self._data[self._front]
Exemple #9
0
 def pop(self):
     if self.is_empty():
         raise Empty('Stack is empty')
     return self._data.pop()
Exemple #10
0
 def top(self):
     if self.is_empty():
         raise Empty('Stack is empty')
     return self._data.head.data