class Alimento::Lista

Clase que representa a una lista doblemente enlazada Se ha incluido el mixin Enumerable

Public Class Methods

new(head, tail) click to toggle source

Se asignan la cabeza (@head) y la cola (@tail) y se enlazan

# File lib/alimento/lista.rb, line 12
def initialize(head, tail)
        @head = head
        @tail = tail
        
        @head.siguiente = @tail
        @tail.anterior = @head
end

Public Instance Methods

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

Se incluye el método del mixin Enumerable Se define como una iteración sobre los valores de cada nodod de la lista

# File lib/alimento/lista.rb, line 59
def each
        tmp = @head
        while tmp != nil do
                yield tmp.valor
                tmp = tmp.siguiente
        end
end
head() click to toggle source

Getter/Setter de @head

# File lib/alimento/lista.rb, line 21
def head
        @head
end
head_out() click to toggle source

Método que extrae/elimina el primer valor de la lista

# File lib/alimento/lista.rb, line 42
def head_out
        aux = @head.siguiente
        @head.siguiente = nil
        @head = aux
        @head.anterior = nil
end
insert(nodo) click to toggle source

Método que inserta un nodo en la cabeza de la lista

# File lib/alimento/lista.rb, line 31
def insert(nodo)
        if(nodo.is_a?Nodo) then
                aux = @head
                @head = nodo
                @head.anterior = nil
                @head.siguiente = aux
                aux.anterior = @head
        end
end
tail() click to toggle source

Getter/Setter de @tail

# File lib/alimento/lista.rb, line 26
def tail
        @tail
end
tail_out() click to toggle source

Método que extrae/elimina el último valor de la lista

# File lib/alimento/lista.rb, line 50
def tail_out
        aux = @tail.anterior
        @tail.anterior = nil
        @tail = aux
        @tail.siguiente = nil
end