class Alimento::Lista

Esta clase es la definición de una lista doblemente enlazada.

Attributes

head[R]
tail[R]

Public Class Methods

new() click to toggle source

Inicia la lista (vacía).

# File lib/alimento/lista.rb, line 13
def initialize
    @head = nil
    @tail = nil
end

Public Instance Methods

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

Se incluye el metodo del mixin Enumerable. Iteración sobre los elementos de la lista desde el principio hasta el final.

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

Elimina el primer elemento de la lista.

# File lib/alimento/lista.rb, line 49
def extraer_head
    @head = @head.siguiente
end
extraer_tail() click to toggle source

Elimina el último elemento de la lista.

# File lib/alimento/lista.rb, line 54
def extraer_tail
    @tail = @tail.anterior
end
insertar_head(valor) click to toggle source

Permite insertar un valor en la lista por delante.

# File lib/alimento/lista.rb, line 19
def insertar_head(valor)
    
    nodo = Nodo.new(valor,nil,nil)
    
    if (@head == nil)
        @head = nodo
        @tail = nodo
    else
        @head.anterior = nodo
        nodo.siguiente = @head
        @head = nodo
    end
end
insertar_tail(valor) click to toggle source

Permite insertar un valor en la lista por detrás.

# File lib/alimento/lista.rb, line 34
def insertar_tail(valor)
    
    nodo = Nodo.new(valor,nil,nil)
    
    if (@tail == nil)
        @tail = nodo
        @head = nodo
    else
        @tail.siguiente = nodo
        nodo.anterior = @tail
        @tail = nodo
    end
end