Class: DSA::PriorityQueue

Inherits:
Object
  • Object
show all
Defined in:
lib/dsa-ruby/priority_queue.rb

Instance Method Summary collapse

Constructor Details

#initialize(type: :min) ⇒ PriorityQueue

Returns a new instance of PriorityQueue.



3
4
5
# File 'lib/dsa-ruby/priority_queue.rb', line 3

def initialize(type: :min)
  @heap = type == :min ? MinHeap.new : MaxHeap.new
end

Instance Method Details

#empty?Boolean

Returns:

  • (Boolean)


35
36
37
# File 'lib/dsa-ruby/priority_queue.rb', line 35

def empty?
  @heap.empty?
end

#peekObject

Raises:

  • (IndexError)


20
21
22
23
24
# File 'lib/dsa-ruby/priority_queue.rb', line 20

def peek
  raise IndexError, "priority queue is empty" if empty?
  _, _, item = @heap.peek
  item
end

#popObject

Raises:

  • (IndexError)


14
15
16
17
18
# File 'lib/dsa-ruby/priority_queue.rb', line 14

def pop
  raise IndexError, "priority queue is empty" if empty?
  _, _, item = @heap.pop
  item
end

#priority_peekObject

Raises:

  • (IndexError)


26
27
28
29
# File 'lib/dsa-ruby/priority_queue.rb', line 26

def priority_peek
  raise IndexError, "priority queue is empty" if empty?
  @heap.peek[0]
end

#push(item, priority) ⇒ Object



7
8
9
10
11
12
# File 'lib/dsa-ruby/priority_queue.rb', line 7

def push(item, priority)
  @counter ||= 0
  @heap.push([priority, @counter, item])
  @counter += 1
  self
end

#sizeObject



31
32
33
# File 'lib/dsa-ruby/priority_queue.rb', line 31

def size
  @heap.size
end