コード例 #1
0
    def pop(self):
        """Remove and return the element from teh top of the stack.

        Raise Empty exception if the stack is empty."""
        if self.is_empty():
            raise Empty("Can't pop from an empty stack.")
        return self._data.pop()
コード例 #2
0
ファイル: priority_queue.py プロジェクト: storypku/tlpi
 def min(self):  # O(1)
     """Return but don't remove (k, v) tuple with minimum key."""
     if self.is_empty():
         raise Empty("Priority queue is empty.")
     pos = self._data.first()
     item = pos.element()
     return (item._key, item._value)
コード例 #3
0
ファイル: arrayqueue.py プロジェクト: storypku/tlpi
    def first(self):
        """Return the first element of the deque.

        Raise Empty exception if the deque is empty.
        """
        if self.is_empty():
            raise Empty("Deque is empty.")
        return self._data[self._front]
コード例 #4
0
ファイル: linked_queue.py プロジェクト: storypku/tlpi
    def last(self):
        """Return the element at the back of the queue.

        Raise Empty exception if the queue is empty.
        """
        if self.is_empty():
            raise Empty("Queue is empty.")
        return self._tail._element
コード例 #5
0
ファイル: linked_deque.py プロジェクト: storypku/tlpi
    def delete_last(self):
        """Remove and return the element from the back of the deque.

        Raise Empty exception if the deque is empty.
        """
        if self.is_empty():
            raise Empty("Deque is empty.")
        return self._delete_node(self._trailer._prev)
コード例 #6
0
ファイル: linked_deque.py プロジェクト: storypku/tlpi
    def delete_first(self):
        """Remove and return the element from the front of the deque.

        Raise Empty exception if the deque is empty.
        """
        if self.is_empty():
            raise Empty("Deque is empty.")
        return self._delete_node(self._header._next)
コード例 #7
0
 def pop(self):
     """Remove and return the element from the top of the stack."""
     if self.is_empty():
         raise Empty("Stack is empty.")
     value = self._top._element
     self._top = self._top._next
     self._size -= 1
     return value
コード例 #8
0
ファイル: priority_queue.py プロジェクト: storypku/tlpi
    def min(self):
        """Return but don't remove (k, v) tuple with minimum key.

        Raise Empty exception if empty.
        """
        if self.is_empty():
            raise Empty("Priority queue is empty.")
        item = self._data[0]
        return (item._key, item._value)
コード例 #9
0
ファイル: linked_queue.py プロジェクト: storypku/tlpi
    def first(self):
        """Return the element at the front of the queue.

        Raise Empty exception if the queue is empty.
        """
        if self.is_empty():
            raise Empty("Queue is empty.")
        head = self._tail._next
        return head._element
コード例 #10
0
ファイル: arrayqueue.py プロジェクト: storypku/tlpi
    def last(self):
        """Return the last element of the deque.

        Raise Empty exception if the deque is empty.
        """
        if self.is_empty():
            raise Empty("Deque is empty.")
        last = (self._front + self._size - 1) % len(self._data)
        return self._data[last]
コード例 #11
0
ファイル: arrayqueue.py プロジェクト: storypku/tlpi
 def delete_last(self):
     """Remove and return the last element from the deque."""
     if self.is_empty():
         raise Empty("Queue is empty.")
     last = (self._front + self._size - 1) % len(self._data)
     answer = self._data[last]
     self._data[last] = None
     self._size -= 1
     if self._size < len(self._data) // 4:
         self._resize(len(self._data) // 2)
     return answer
コード例 #12
0
ファイル: priority_queue.py プロジェクト: storypku/tlpi
 def _find_min(self):  # O(n)
     """Return Position of item with minimum key."""
     if self.is_empty():
         raise Empty("Priority queue is empty.")
     small = self._data.first()
     walk = self._data.after(small)
     while walk is not None:
         if walk.element() < small.element():
             small = walk
         walk = self._data.after(walk)
     return small
コード例 #13
0
ファイル: priority_queue.py プロジェクト: storypku/tlpi
    def remove_min(self):
        """Remove and return (k, v) tuple with minimum key.

        Raise Empty exception if empty.
        """
        if self.is_empty():
            raise Empty("Priority queue is empty.")
        self._swap(0, len(self._data) - 1)
        item = self._data.pop()
        self._downheap(0)
        return (item._key, item._value)
コード例 #14
0
ファイル: linked_queue.py プロジェクト: storypku/tlpi
    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.")
        value = self._head._element
        self._head = self._head._next
        self._size -= 1
        if self.is_empty():
            self._tail = None
        return value
コード例 #15
0
ファイル: arrayqueue.py プロジェクト: storypku/tlpi
    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.")
        answer = self._data[self._front]
        self._data[self._front] = None
        self._front = (self._front + 1) % len(self._data)
        self._size -= 1
        if self._size < len(self._data) // 4:
            self._resize(len(self._data) // 2)
        return answer
コード例 #16
0
ファイル: linked_queue.py プロジェクト: storypku/tlpi
    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.")
        oldhead = self._tail._next
        if self._size == 1:
            self._tail = None
        else:
            self._tail._next = oldhead._next
        self._size -= 1
        return oldhead._element
コード例 #17
0
ファイル: linked_deque.py プロジェクト: storypku/tlpi
 def last(self):
     """Return the element at the end of the deque."""
     if self.is_empty():
         raise Empty("Deque is empty.")
     return self._trailer._prev._element
コード例 #18
0
ファイル: linked_deque.py プロジェクト: storypku/tlpi
 def first(self):
     """Return the element at the front of the deque."""
     if self.is_empty():
         raise Empty("Deque is empty.")
     return self._header._next._element
コード例 #19
0
ファイル: priority_queue.py プロジェクト: storypku/tlpi
 def remove_min(self):  # O(1)
     """Remove and return (k, v) tuple with minimum key."""
     if self.is_empty():
         raise Empty("Priority queue is empty.")
     item = self._data.delete(self._data.first())
     return (item._key, item._value)
コード例 #20
0
ファイル: linked_queue.py プロジェクト: storypku/tlpi
 def first(self):
     """Return the element at the front of the queue"""
     if self.is_empty():
         raise Empty("Queue is empty.")
     return self._head._element
コード例 #21
0
 def peek(self):
     """Return the element at the top of the stack."""
     if self.is_empty():
         raise Empty("Can't peek at an empty stack.")
     return self._data[-1]
コード例 #22
0
 def peek(self):
     """Return the element at the top of the stack."""
     if self.is_empty():
         raise Empty("Stack is empty.")
     return self._top._element