class DLL
Attributes
head[R]
lenght[R]
tail[R]
Public Class Methods
new(*values)
click to toggle source
# File lib/dietaryMenu/dll.rb, line 13 def initialize(*values) @length = 0 @head = nil @tail = nil unless values.empty? push(*values) end end
Public Instance Methods
[](i)
click to toggle source
# File lib/dietaryMenu/dll.rb, line 41 def [](i) node = @tail i.times do node = @tail.next end node.value end
each(reverse=false) { |pointer| ... }
click to toggle source
# File lib/dietaryMenu/dll.rb, line 69 def each(reverse=false, &block) if(reverse) pointer = @head prox = :prev else pointer = @tail prox = :next end while (pointer!=nil) yield pointer pointer = pointer[prox] end end
push(*values)
click to toggle source
# File lib/dietaryMenu/dll.rb, line 22 def push(*values) if values.empty? raise "No hay valores a insertar" end value = values[0] if @head.nil? @head = @tail = Node.new(value, nil, nil) @length+=1 else insert(value) end (1...values.length).each do |i| insert(values[i]) end end
reverse()
click to toggle source
# File lib/dietaryMenu/dll.rb, line 54 def reverse self.to_s(true) end
shift()
click to toggle source
# File lib/dietaryMenu/dll.rb, line 57 def shift value = nil if(@head!= nil) pointer = @head value = pointer.value @head = pointer.prev @head.next = nil pointer.prev = nil end return value end
to_s( reverse = false )
click to toggle source
# File lib/dietaryMenu/dll.rb, line 48 def to_s( reverse = false ) self.each(reverse) do |pointer| puts pointer end "length: #{@length}" end
Private Instance Methods
insert(value)
click to toggle source
# File lib/dietaryMenu/dll.rb, line 86 def insert(value) node = Node.new(value, @head, nil) @head.next = node @head = node @length +=1 end