class LDE
Clase LDE
que es Una lista doblemente enlazada
Attributes
head[R]
size[R]
tail[R]
Public Class Methods
new()
click to toggle source
# File lib/Alimento/lista.rb, line 9 def initialize @head = nil @tail = nil @size = 0 end
Public Instance Methods
each() { |tmp| ... }
click to toggle source
Funcion para el modulo enumerable
# File lib/Alimento/lista.rb, line 21 def each tmp = @head while(tmp != nil) yield tmp tmp = tmp[:next] end end
list_to_array()
click to toggle source
# File lib/Alimento/lista.rb, line 83 def list_to_array() self.map { |e| e[:value] } end
ord_each()
click to toggle source
# File lib/Alimento/lista.rb, line 99 def ord_each s = self.list_to_array (1..(s.size-1)).each do |i| (0..(s.size-i-1)).each do |j| if s[j].valor_energetico > s[j+1].valor_energetico s[j],s[j+1] = s[j+1],s[j] end end end s end
ord_for()
click to toggle source
# File lib/Alimento/lista.rb, line 87 def ord_for s = self.list_to_array for i in 1..(s.size-1) for j in 0..(s.size-i-1) if s[j].valor_energetico > s[j+1].valor_energetico s[j],s[j+1] = s[j+1],s[j] end end end s end
ord_sort()
click to toggle source
# File lib/Alimento/lista.rb, line 111 def ord_sort s = self.list_to_array s.sort { |a,b| a.valor_energetico <=> b.valor_energetico } end
pop_back()
click to toggle source
Sacas elemento por el final
# File lib/Alimento/lista.rb, line 73 def pop_back() if(@size!=0) tail = @tail @tail = tail.prev @tail.next = nil if @tail @size -=1 return tail end end
pop_front()
click to toggle source
Sacas elemento por el principio
# File lib/Alimento/lista.rb, line 62 def pop_front() if(@size!=0) head = @head @head = head.next @head.prev = nil @size -=1 return head end end
push_back(valor)
click to toggle source
Insertas elemento por el final
# File lib/Alimento/lista.rb, line 30 def push_back(valor) node = Node.new(valor,nil,nil) if(@size==0) @head = node @tail = node @size +=1 elsif @tail.next = node node.prev = @tail @tail=node @size +=1 end true end
push_front(valor)
click to toggle source
Insertas elemento por el principio
# File lib/Alimento/lista.rb, line 46 def push_front(valor) node = Node.new(valor,nil,nil) if(@size==0) @head = node @tail = node @size +=1 elsif @head.prev = node node.next = @head @head=node @size +=1 end true end