programming-examples/ruby/Data_Structures/queue_as_linked_list.rb

38 lines
650 B
Ruby
Raw Normal View History

2019-11-15 12:59:38 +01:00
# 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.
class QueueAsLinkedList < Queue
def initialize
super
@list = SinglyLinkedList.new
end
def purge
@list.purge
super
end
def head
raise ContainerEmpty if @count == 0
@list.first
end
def enqueue(obj)
@list.append(obj)
@count += 1
end
def dequeue
raise ContainerEmpty if @count == 0
result = @list.first
@list.extract(result)
@count -= 1
result
end
end