class Lista

Clase Lista , es una lista doblemente enlazada @author Lisseth Vergaray Del Aguila

Attributes

cabeza[RW]

@return [Numeric] el tamaño de la lista @return [Pointer] el puntero cabeza de lista @return [Pointer] el puntero cola de lista

cola[RW]

@return [Numeric] el tamaño de la lista @return [Pointer] el puntero cabeza de lista @return [Pointer] el puntero cola de lista

tam[RW]

@return [Numeric] el tamaño de la lista @return [Pointer] el puntero cabeza de lista @return [Pointer] el puntero cola de lista

Public Class Methods

new() click to toggle source
# File lib/tdd/Lista.rb, line 12
def initialize()
    @tam = 0
    @cabeza = nil
    @cola = nil 
end

Public Instance Methods

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

Método de acceso a acada elemento con Enumerable

# File lib/tdd/Lista.rb, line 92
def each
    aux = @cabeza
    while(aux != nil)
        yield aux[:value]
        aux= aux[:Next_]
    end
end
extraer_delante() click to toggle source

Extraer un elemento por la cabeza @return aux retorna el campo value del nodo

# File lib/tdd/Lista.rb, line 53
def extraer_delante
    if(@tam == 0)
       puts "La Lista está vacía"
    else
       aux = @cabeza
       @cabeza = @cabeza[:Next_]
       @cabeza[:prev] = nil
       @tam = @tam - 1
       return aux[:value]
    end
end
extraer_detras() click to toggle source

Extraer un elemento por la cola

@return aux retorna el campo value  del nodo
# File lib/tdd/Lista.rb, line 66
def extraer_detras
    if(@tam == 0)
       puts "La Lista está vacía"
    else
       aux = @cola
       @cola = @cola[:prev]
       @cola[:Next_] = nil
       @tam = @tam - 1
       return aux[:value]
    end
end
find(nombre) click to toggle source
# File lib/tdd/Lista.rb, line 100
def find (nombre)
   aux = @cabeza
   while(aux != nil)
       if (nombre == aux.value)
            return aux
       else 
            aux = aux.Next_
       end
   end
end
insertar_delante(dato) click to toggle source

Inserta un nodo por la cabeza de la lista @param dato [Value] será el campo value del nodo

# File lib/tdd/Lista.rb, line 19
def insertar_delante(dato)
    dato_ = Nodo.new(dato,nil,nil)
    if (tam == 0) 
        @cola = dato_ 
        @cabeza = dato_
        
    else  
        dato_[:Next_] = @cabeza  #|nil|cabeza/dato|nil
        @cabeza.prev = dato_
        dato_[:prev] = nil
        @cabeza = dato_
        
    end 
    @tam = @tam + 1

end
insertar_detras(dato) click to toggle source

Inserta por la cola y aunmenta tamaño de lista @param dato [Value] será el campo value del nodo

# File lib/tdd/Lista.rb, line 37
def insertar_detras(dato)
    dato_ = Nodo.new(dato,nil,nil)
    if (@tam == 0)
        @cabeza = dato_
        @cola = dato_
    else
        dato_[:prev] = @cola
        @cola[:Next_]= dato_
        dato_[:Next_] = nil
        @cola = dato_
    end
   
    @tam = @tam + 1 
end
sort_lista() click to toggle source

Método de ordenación de lista

# File lib/tdd/Lista.rb, line 86
def sort_lista
#   @lista_ordenada = Lista.new()
#   self.each{|i| @lista_ordenada.insertar_detras(i)}.sort{ |a,b| a <=> b}
        
end
to_s() click to toggle source

Mostrar la lista

# File lib/tdd/Lista.rb, line 78
def to_s
   aux = @cabeza
   while(aux != nil)
       puts aux.value
       aux = aux.Next_
   end
end