Skip to content

Commit 4cde2a9

Browse files
committed
Added queue.Shift()
1 parent 886b670 commit 4cde2a9

File tree

2 files changed

+20
-0
lines changed

2 files changed

+20
-0
lines changed

priority_queue.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,13 @@ func NewPriorityQueue[T any]() *PriorityQueue[T] {
1818
return &PriorityQueue[T]{}
1919
}
2020

21+
func (q *PriorityQueue[T]) Shift() T {
22+
l := len(q.elements)
23+
x := q.elements[0]
24+
q.elements = q.elements[1:l]
25+
return x.Element
26+
}
27+
2128
func (q *PriorityQueue[T]) Insert(element T, priority int64) bool {
2229
q.priority--
2330

priority_queue_test.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,3 +23,16 @@ func TestPriorityQueue_SamePriority(t *testing.T) {
2323

2424
assert.Equal(t, []string{"Swoole", "Swow", "Hyperf"}, queue.ToArray())
2525
}
26+
27+
func TestPriorityQueue_Shift(t *testing.T) {
28+
queue := &PriorityQueue[string]{}
29+
queue.Insert("Hyperf", 1)
30+
queue.Insert("Swoole", 0)
31+
queue.Insert("Swow", 2)
32+
33+
queue.Sort()
34+
assert.Equal(t, "Swow", queue.Shift())
35+
assert.Equal(t, "Hyperf", queue.Shift())
36+
assert.Equal(t, "Swoole", queue.Shift())
37+
assert.Equal(t, 0, queue.Len())
38+
}

0 commit comments

Comments
 (0)