class Lista
Clase Lista
, es una lista doblemente enlazada @author Lisseth Vergaray Del Aguila
Attributes
@return [Numeric] el tamaño de la lista @return [Pointer] el puntero cabeza de lista @return [Pointer] el puntero cola de lista
@return [Numeric] el tamaño de la lista @return [Pointer] el puntero cabeza de lista @return [Pointer] el puntero cola de lista
@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
# File lib/tdd/Lista.rb, line 12 def initialize() @tam = 0 @cabeza = nil @cola = nil end
Public Instance Methods
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 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 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
# 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
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
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
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
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