Sha256: 7ddce2b23e6aa69a430f3fe1f751ac4d0fc321aae86b77dda059b41c14680d02

Contents?: true

Size: 1.78 KB

Versions: 1

Compression:

Stored size: 1.78 KB

Contents

module Alimento

    # Esta clase representa el nodo de una lista. 
    Nodo = Struct.new(:valor, :siguiente, :anterior)
    
    # Esta clase es la definición de una lista doblemente enlazada.
    class Lista
    
        include Enumerable
        attr_reader :head, :tail
    
        # Inicia la lista (vacía). 
        def initialize
            @head = nil
            @tail = nil
        end
        
        # Permite insertar un valor en la lista por delante. 
        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
        
        # Permite insertar un valor en la lista por detrás. 
        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
        
        # Elimina el primer elemento de la lista. 
        def extraer_head
            @head = @head.siguiente
        end
        
        # Elimina el último elemento de la lista. 
        def extraer_tail
            @tail = @tail.anterior
        end
        
        # Se incluye el metodo del mixin Enumerable. 
        # Iteración sobre los elementos de la lista desde el principio hasta el final.
        def each
            iterador = @head
    		while iterador != nil
    		    yield iterador.valor
    			iterador = iterador.siguiente
    		end
        end
    
    end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
alimento-0100905144-0.1.1 lib/alimento/lista.rb