You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
635 B
Ruby
41 lines
635 B
Ruby
5 years ago
|
# This file contains the Ruby code from book of
|
||
|
# "Data Structures and Algorithms
|
||
|
# with Object-Oriented Design Patterns in Ruby"
|
||
|
# by Bruno R. Preiss.
|
||
|
#
|
||
|
# Copyright (c) 2004 by Bruno R. Preiss, P.Eng. All rights reserved.
|
||
|
|
||
|
module PriorityQueueMethods
|
||
|
|
||
|
abstractmethod :enqueue
|
||
|
|
||
|
abstractmethod :min
|
||
|
|
||
|
abstractmethod :dequeueMin
|
||
|
|
||
|
end
|
||
|
|
||
|
class PriorityQueue < Container
|
||
|
|
||
|
def initialize
|
||
|
super
|
||
|
end
|
||
|
|
||
|
include PriorityQueueMethods
|
||
|
|
||
|
end
|
||
|
|
||
|
module MergeablePriorityQueueMethods
|
||
|
|
||
|
abstractmethod :merge!
|
||
|
end
|
||
|
|
||
|
class MergeablePriorityQueue < PriorityQueue
|
||
|
|
||
|
def initialize
|
||
|
super
|
||
|
end
|
||
|
|
||
|
include MergeablePriorityQueueMethods
|
||
|
|
||
|
end
|