Sha256: e2407f4a445da9453c021370ece54ccdf699cbdc2a051f5c73bfb04948fcbf09
Contents?: true
Size: 1.43 KB
Versions: 2
Compression:
Stored size: 1.43 KB
Contents
module RubyCollections class LinkedList attr_accessor :size, :top def initialize @size = 0 @top = nil end def empty? size.zero? end def header @top ? @top.to_s : nil end def add(data, index = nil) return nil if index and index >= size if index get(index-1).setNext(data) else node = Node.new(data, top) @top = node end @size += 1 end def get(index) node = top index.times {node = node.getNext} return node end def remove(index) node = get(index-1) to_be_removed = node.getNext node.setNext(to_be_removed.getNext) @size -= 1 end def to_s return "" if empty? data = [] data << (node = top).data (size-1).times {data << (node = node.getNext).data} return data.to_s end class Node attr_accessor :data def initialize(data, next_node) @data = data @next = next_node.object_id end def getNext ObjectSpace._id2ref(@next) end def setNext(data) node = Node.new(data, nil) next_node_id = instance_variable_get(:@next) @next = node.object_id node.instance_variable_set(:@next, next_node_id) return node end def to_s "#{data}" end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
ruby_collections-0.0.6 | lib/ruby_collections/linked_list.rb |
ruby_collections-0.0.5 | lib/ruby_collections/linked_list.rb |