Sha256: 3e507044b000ff5c4ce8931288c7af3e8073a309dc2551052325b7182287d46c

Contents?: true

Size: 894 Bytes

Versions: 12

Compression:

Stored size: 894 Bytes

Contents

require 'linked_list'

# Keeps a list of items sorted. Elements must be comparable
class SortedList
  attr_reader :list
  def initialize(initial_list=nil)
    @list = LinkedList.new
    unless initial_list.nil?
      initial_list.each do |item|
        add item
      end
    end
  end
  
  def add(item)
    added = false
    @list.each_element do |node|
      if node.obj > item
        added = true
        @list.place item, :before, node
        break
      end
    end
    @list << item unless added
    item
  end
  alias :<< :add
  
  def shift
    @list.shift
  end
  
  def empty?
    @list.empty?
  end
  
  def contains?(item)
    @list.each do |obj|
      if obj == item
        return true
      end
    end
    false
  end
  
  def find(item)
    @list.each do |obj|
      if obj == item
        return obj
      end
    end
    nil
  end
  
  def size
    @list.size
  end
  
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
gamebox-0.2.1 lib/gamebox/lib/sorted_list.rb
gamebox-0.1.1 lib/gamebox/lib/sorted_list.rb
gamebox-0.1.0 lib/gamebox/lib/sorted_list.rb
gamebox-0.0.9 lib/gamebox/lib/sorted_list.rb
gamebox-0.0.8 lib/gamebox/lib/sorted_list.rb
gamebox-0.0.7 lib/gamebox/lib/sorted_list.rb
gamebox-0.0.1 lib/gamebox/sorted_list.rb
gamebox-0.0.2 lib/gamebox/sorted_list.rb
gamebox-0.0.3 lib/gamebox/sorted_list.rb
gamebox-0.0.4 lib/gamebox/sorted_list.rb
gamebox-0.0.5 lib/gamebox/sorted_list.rb
gamebox-0.0.6 lib/gamebox/sorted_list.rb