Class: PriorityQueue

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

Instance Method Summary collapse

Constructor Details

#initializePriorityQueue

Returns a new instance of PriorityQueue.



4
5
6
# File 'lib/priority_queue.rb', line 4

def initialize
  clear
end

Instance Method Details

#[](value) ⇒ Object



12
13
14
# File 'lib/priority_queue.rb', line 12

def [](value)
  @queues[value] ||= Queue.new
end

#clearObject



8
9
10
# File 'lib/priority_queue.rb', line 8

def clear
  @queues = {}
end

#empty?Boolean

Returns:

  • (Boolean)


37
38
39
# File 'lib/priority_queue.rb', line 37

def empty?
  @queues.all? {|priority, queue| queue.empty?}
end

#prioritiesObject



16
17
18
# File 'lib/priority_queue.rb', line 16

def priorities
  @queues.keys.sort
end

#shiftObject



20
21
22
23
24
25
26
27
28
29
# File 'lib/priority_queue.rb', line 20

def shift
  priorities.each do |key|
    if not self[key].empty?
      return self[key].shift(true)
    else
      @queues.delete(key)
    end
  end
  nil
end

#sizeObject



31
32
33
34
35
# File 'lib/priority_queue.rb', line 31

def size
  @queues.values.inject(0) do |size, queue|
    size + queue.size
  end
end