Add an element to the queue.
(self, elt, priority=None)
| 172 | return len(self.heap) |
| 173 | |
| 174 | def push(self, elt, priority=None): |
| 175 | """Add an element to the queue.""" |
| 176 | if priority is not None: |
| 177 | elt = _HeapElement(priority, elt) |
| 178 | # If element is already in queue, do nothing |
| 179 | if elt in self.position: |
| 180 | return False |
| 181 | # Add element to heap and dict |
| 182 | pos = len(self.heap) |
| 183 | self.heap.append(elt) |
| 184 | self.position[elt] = pos |
| 185 | # Restore invariant by sifting down |
| 186 | self._siftdown(0, pos) |
| 187 | return True |
| 188 | |
| 189 | def pop(self): |
| 190 | """Remove and return the smallest element in the queue.""" |