aboutsummaryrefslogtreecommitdiff
path: root/internal/priorityqueue/pop.go
blob: 2190b065fd7031ba312339d8227f6ba202007452 (about) (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package priorityqueue

// Pop removes one highest-priority item.
func (queue *Queue[T]) Pop() (T, bool) {
	if len(queue.items) == 0 {
		var zero T

		return zero, false
	}

	last := len(queue.items) - 1
	top := queue.items[0]
	queue.items[0] = queue.items[last]
	queue.items = queue.items[:last]

	if len(queue.items) > 0 {
		queue.siftDown(0)
	}

	return top, true
}