Sha256: d3774746fb712488500515b7c83b31d961d4991d0aa7ce12a073be9b82b18c53
Contents?: true
Size: 1.72 KB
Versions: 1
Compression:
Stored size: 1.72 KB
Contents
module References # Struct of a list Node = Struct.new(:value, :next, :back) # Is a double-linked list class List include Enumerable def initialize(*vals) if vals.length == 0 @head = nil @last = nil else for val in vals do pushEnd val end end end def each aux = @head while aux != nil yield aux.value aux = aux.next end end def takeFirst if (@head==@last) if @head == nil return nil end value = @head.value @head = nil @last = nil return value else value = @head.value @head = @head.next @head.back = nil return value end end def takeLast if (@head==@last) if @last == nil return nil end value = @last.value @head = nil @last = nil return value else value = @last.value @last = @last.back @last.next = nil return value end end def put(val) if @head == nil @head = @last = Node.new(val,nil,nil) else aux = Node.new(val,@head, nil) @head.back = aux @head = aux end nil end def pushEnd(val) if @last==nil @head = @last = Node.new(val,nil,nil) else aux = Node.new(val,nil,@last) @last.next = aux @last = aux end nil end def length aux = @head count = 0 while aux!=nil count = count + 1 aux = aux.next end count end def head if @head != nil @head.value else nil end end def last if @last != nil @last.value else nil end end def to_s (self.sort.map { |x| x.formatAPA }).join("\n") end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
referencess-0.1.0 | lib/references/list.rb |