class Containers::Queue

A Queue is a container that keeps elements in a first-in first-out (FIFO) order. Because of its properties, it is often used as a buffer.

This implementation uses a doubly-linked list, guaranteeing O(1) complexity for all operations.

Public Class Methods

new(ary=[]) click to toggle source

Create a new queue. Takes an optional array argument to initialize the queue.

q = Containers::Queue.new([1, 2, 3])
q.pop #=> 1
q.pop #=> 2
   # File lib/containers/queue.rb
17 def initialize(ary=[])
18   @container = Containers::Deque.new(ary)
19 end

Public Instance Methods

<<(obj)
Alias for: push
each(&block) click to toggle source

Iterate over the Queue in FIFO order.

   # File lib/containers/queue.rb
64 def each(&block)
65   @container.each_forward(&block)
66 end
empty?() click to toggle source

Returns true if the queue is empty, false otherwise.

   # File lib/containers/queue.rb
59 def empty?
60   @container.empty?
61 end
next() click to toggle source

Returns the next item from the queue but does not remove it.

q = Containers::Queue.new([1, 2, 3])
q.next #=> 1
q.size #=> 3
   # File lib/containers/queue.rb
26 def next
27   @container.front
28 end
pop() click to toggle source

Removes the next item from the queue and returns it.

q = Containers::Queue.new([1, 2, 3])
q.pop #=> 1
q.size #=> 2
   # File lib/containers/queue.rb
46 def pop
47   @container.pop_front
48 end
push(obj) click to toggle source

Adds an item to the queue.

q = Containers::Queue.new([1])
q.push(2)
q.pop #=> 1
q.pop #=> 2
   # File lib/containers/queue.rb
36 def push(obj)
37   @container.push_back(obj)
38 end
Also aliased as: <<
size() click to toggle source

Return the number of items in the queue.

q = Containers::Queue.new([1, 2, 3])
q.size #=> 3
   # File lib/containers/queue.rb
54 def size
55   @container.size
56 end