class List

Representa una lista doblemente enlazada con una cabeza y una cola, pudiéndose insertar un array de alimentos o alimentos individuales

Author

Alberto González (alu0100949568@ull.edu.es)

Copyright

Cretive Commons

License

Distributes under the same terms as Ruby

Public Class Methods

new() click to toggle source
# File lib/P07/list.rb, line 4
def initialize
        @head = @tail = nil
end

Public Instance Methods

each() { |value| ... } click to toggle source

Método que nos permite recorrer cada uno de los nodos de nuestra lista

# File lib/P08/list.rb, line 99
def each
        next_val = @tail
          while next_val != nil do
                yield next_val.value
                next_val = next_val.next
          end
end
head() click to toggle source
# File lib/P07/list.rb, line 39
def head
        @head.value unless @head.nil?
end
push(value) click to toggle source
# File lib/P07/list.rb, line 8
def push(value)
        ##Si es un array
    if value.is_a?(Array)
      value.each do |val|
        prev = @tail unless @tail.nil?
        while prev != @head do
          prev = prev.next
        end
    
        node = Node.new(val, nil, prev)

        @tail = node if @tail.nil?
        @head.next = node unless @head.nil?
    
        @head = node
      end
    else  #Si es un único valor
      prev = @tail unless @tail.nil?
        while prev != @head do
          prev = prev.next
        end
   
        node = Node.new(value, nil, prev)

        @tail = node if @tail.nil?
        @head.next = node unless @head.nil?
    
        @head = node
    end         
end
remove_head() click to toggle source
# File lib/P07/list.rb, line 51
def remove_head
        @head = @head.prev
        @head.next = nil
end
remove_tail() click to toggle source
# File lib/P07/list.rb, line 47
def remove_tail
       @tail = @tail.next
end
size() click to toggle source
# File lib/P07/list.rb, line 70
def size
        count = 0 
        next_val = @tail unless @tail.nil?
         while next_val != nil do
                next_val = next_val.next
                count +=1
         end
        "#{count}"
end
tail() click to toggle source
# File lib/P07/list.rb, line 43
def tail
        @tail.value unless @tail.nil?
end
to_s() click to toggle source
# File lib/P07/list.rb, line 56
def to_s
    array = "["
    next_val = @tail unless @tail.nil?
      while next_val != nil do
        array = array + next_val.value.to_s + ", "
        next_val = next_val.next

        if next_val == nil #For las element
          array = array.chomp(', ') + "]"
        end
      end
        "#{array}"
end