class List
Clase List que define la lista doblemente enlazada e incluye el mixin Enumerable
Attributes
head[R]
tail[R]
Public Class Methods
new(head,tail)
click to toggle source
Se asigna la cabeza y la cola de la lista doblemente enlazada
# File lib/alimento/list.rb, line 21 def initialize(head,tail) @head = head @tail = tail end
Public Instance Methods
each() { |value| ... }
click to toggle source
Se incluye el metodo mixin Enumerable Se define como un bucle completo sobre la lista
# File lib/alimento/list.rb, line 57 def each node=@head while node != nil do yield node.value node = node.next end end
insert(vector)
click to toggle source
Inserta en la lista uno o varios elementos los cuales recibe en forma de vector
# File lib/alimento/list.rb, line 26 def insert vector vector.each do |element| node = Node.new(element,nil,nil) if(@head==nil) @head = node @tail = node else node.prev=@tail @tail.next = node @tail=node end end end
ordenar_each()
click to toggle source
Se ordena una lista utilizando el método each
# File lib/alimento/list.rb, line 84 def ordenar_each vector = self.map { |x| x } indice=0 vector.each do |x| aux = x c=indice indice2=indice+1 vector[indice2..vector.length-1].each do |y| if aux > y aux = y c = indice2 end indice2+=1 end vector[c] = x vector[indice] = aux indice+=1 end vector end
ordenar_seleccion()
click to toggle source
Se ordena una lista utlizando bucles for
# File lib/alimento/list.rb, line 65 def ordenar_seleccion vector = self.map { |x| x } for i in 0..self.count-1 aux = vector[i] c = i for j in i + 1..self.count-1 if aux > vector[j] aux = vector[j] c = j end end vector[c] = vector[i] vector[i] = aux end vector end
shift_first()
click to toggle source
Elimina el primer elemento de la lista
# File lib/alimento/list.rb, line 40 def shift_first @head=@head.next @head.prev=nil end
shift_last()
click to toggle source
Elimina el último elemento de la lista
# File lib/alimento/list.rb, line 45 def shift_last @tail=@tail.prev @tail.next=nil end
to_s()
click to toggle source
Formatea la salida a texto
# File lib/alimento/list.rb, line 50 def to_s string="" each { |value| string+=value.to_s + "\n" } # Funciona también entre do-end return string end