class BasicQueue::Queue

@author Robert Sedgewick @author Kevin Wayne @author Michael Imstepf @see algs4.cs.princeton.edu/13stacks @see algs4.cs.princeton.edu/13stacks/LinkedQueue.java.html

Public Class Methods

new() click to toggle source

Initializes the queue and sets variables.

# File lib/basic_queue.rb, line 24
def initialize
  @length = 0
  @first = nil
  @last = nil
end

Public Instance Methods

<<(item) click to toggle source

Adds new item to the queue. Alias method for enq(). @param item [Item] the item to be enqueued @return [Item] item

# File lib/basic_queue.rb, line 55
def <<(item)
  enq(item)
end
clear() click to toggle source

Clears queue. @return [Boolean] true

# File lib/basic_queue.rb, line 85
def clear
  @length = 0
  @first = nil
  @last = nil
  true    
end
deq() click to toggle source

Removes and returns the item on this queue that was least recently added. @return [Item] dequeued item

# File lib/basic_queue.rb, line 61
def deq
  return nil if empty?
  
  # save previous first node for return value
  old_first = @first

  # update first node
  @first = @first.next_node
  @length -= 1

  # avoid loitering
  @last = nil if empty?

  old_first.item
end
empty?() click to toggle source

Checks whether the queue is empty or not. @return [Boolean]

# File lib/basic_queue.rb, line 106
def empty?
  length == 0
end
enq(item) click to toggle source

Adds new item to the queue. @param item [Item] the item to be enqueued @return [Item] item

# File lib/basic_queue.rb, line 33
def enq(item)
  # save previous old last node for use below
  old_last = @last
  
  # create new last node and update @last_item
  @last = Node.new(item, nil)    

  if empty? # set to nil
    @first = @last
  else # point 2nd last node to last node
    old_last.next_node = @last
  end
  
  @length += 1

  item
end
length() click to toggle source

Returns length of queue. @return [Integer]

# File lib/basic_queue.rb, line 94
def length
  @length
end
peek() click to toggle source

Returns next item in the queue. @return [Item] item

# File lib/basic_queue.rb, line 79
def peek
  empty? ? nil : @first.item
end
size() click to toggle source

Returns length of queue. Alias method for length.

# File lib/basic_queue.rb, line 100
def size
  length
end