class List

Esta clase permite representar listas doblemente enlazadas. Su desarrollo ha sido dirigido por pruebas (TDD). Se han incluido el mixin Enumerable

Author

Sergio Ferrera de Diego (sergioferrera1296@gmail.com)

Copyright

Cretive Commons

License

Distributes under the same terms as Ruby

Attributes

cabeza[R]
cola[R]
tam[R]

Public Class Methods

new() click to toggle source

Método para asignar los datos de la lista

@param cola cola de la lista @param cabeza cabeza de la lista @param tam tamaño de la lista

# File lib/prct06/lista.rb, line 21
def initialize
        
   @cola=nil
   @cabeza=nil
   @tam=0
   
end

Public Instance Methods

each() { |temp = cabeza| ... } click to toggle source

Método para definir como recorrer los elementos de la lista

# File lib/prct06/lista.rb, line 30
def each
    yield temp = @cabeza
    if tam!=0
        for i in (1 ..tam-1)
            yield temp = temp.prev
        end
    end
end
introducir_en_cabeza!(valor) click to toggle source

Método para introducir un nuevo elemento en la cabeza de lista

@param valor elemento a introducir

# File lib/prct06/lista.rb, line 62
def introducir_en_cabeza!(valor)
    
    if(@tam==0)
        @cabeza=Node.new(valor,nil,nil)
        @cola= cabeza
        
        else
        @cabeza.next=Node.new(valor,cola,nil)
        @cabeza.next.prev= cabeza
        @cabeza= cabeza.next
        
    end
    
    @tam+=1
    
end
introducir_en_cola!(valor) click to toggle source

Método para introducir un nuevo elemento en la cola de lista

@param valor elemento a introducir

# File lib/prct06/lista.rb, line 42
def introducir_en_cola!(valor)
    
    if(@tam==0)
        @cola=Node.new(valor,nil,nil)
        @cabeza= cola
        
        else
        @cola.prev=Node.new(valor,cola,nil)
        @cola.prev.next= cola
        @cola= cola.prev
        
    end
    
    @tam+=1
    
end
introducir_string!(valor) click to toggle source

Método para introducir un varios nuevos elementos provenientes de una cadena de caracteres en la cabeza de lista

@param cadena de caracteres que contiene los nuevos elementos a introducir

# File lib/prct06/lista.rb, line 133
def introducir_string!(valor)
    
    for num in (0..valor.length-1)
        introducir_en_cabeza!(valor[num])
    end
    
end
quitar_cabeza!() click to toggle source

Método para eliminar un elemento de la cabeza de lista

# File lib/prct06/lista.rb, line 101
def quitar_cabeza!
    
    temp=@cabeza
    
    if(tam>0)
        @cabeza= cabeza.prev
        if cabeza.nil?
            @cola=nil
            else
            @cabeza.next=nil
        end
        temp.next=nil
        temp.prev=nil
        @tam-=1
    end
    
    temp
    
end
quitar_cola!() click to toggle source

Método para eliminar un elemento de la cola de lista

# File lib/prct06/lista.rb, line 80
def quitar_cola!
    
    temp=@cola
    
    if(tam>0)
        @cola= cola.next
        if cola.nil?
            @cabeza=nil
            else
            @cola.prev=nil
        end
        temp.next=nil
        temp.prev=nil
        @tam-=1
    end
    
    temp
    
end
to_s() click to toggle source

Método para definir la forma en la que mostrar los datos de la lista

# File lib/prct06/lista.rb, line 122
def to_s
    if(tam>0)
        "tamaño:#{tam} contenido:(#{cabeza.value} #{cola.value})"
        else
        "Sin valores almacenados."
    end
end