class ListaDoble

Clase ListaDoble lista de nodo doble se recorre en cualquier sentido

Attributes

cont[R]
final[R]
inicio[R]

Public Class Methods

new() click to toggle source
# File lib/menu/listadoble.rb, line 7
def initialize()
    @inicio = nil
    @final = nil
    @cont = 0
end

Public Instance Methods

each() { |value| ... } click to toggle source
# File lib/menu/listadoble.rb, line 13
def each
       aux=@inicio
     
       while aux!= nil
          yield aux.value
          aux= aux.next
       end
       
end
extraeFinal() click to toggle source

Extraer el nodo final y eliminarlo de mi lista

# File lib/menu/listadoble.rb, line 172
def extraeFinal
    aux=NodeDoble.new(@final.value,nil,nil)
 
    if @final==nil
       aux=nil
       @final=nil
    else
        
        if @final.prev == nil
           @final=nil  
           @inicio=nil
        else
            auxdos=@final
            @final = @final.prev
            auxdos.prev = nil
        end    
        
        @cont=  @cont-1   
    end
    
    aux
end
extraeInicio() click to toggle source

Extraer el nodo inicio y eliminarlo de mi lista

# File lib/menu/listadoble.rb, line 147
def extraeInicio
    aux=NodeDoble.new(@inicio.value,nil,nil)
 
    if @inicio==nil
       aux=nil
       @inicio=nil
    else
        
        if @final.prev == nil
           @final=nil  
           @inicio=nil
        else
            auxdos=@inicio
            @inicio = @inicio.next
            auxdos.next = nil
        end    
        

        @cont=  @cont-1   
    end
    
    aux
end
insertarFinal(nodos) click to toggle source

Insertar el nodo por el comienzo y comprueba si la insertar a tenido exido

# File lib/menu/listadoble.rb, line 24
def insertarFinal (nodos)
    insert = false
  
    if nodos.instance_of?Array
        nodos.each do |x| 
           introduceFinal(x)
        end
        insert = true
    else
        introduceFinal(nodos)
        insert = true
    end
  
    return insert
end
insertarInicio(nodos) click to toggle source
# File lib/menu/listadoble.rb, line 41
def insertarInicio (nodos)
    insert = false
  
    if nodos.instance_of?Array
        nodos.each do |x| 
           introduceInicio(x)
        end
        insert = true
    else
        introduceInicio(nodos)
        insert = true
    end
  
    return insert
end
introduceFinal(nodo) click to toggle source

Introduce siempre por el nodo final

# File lib/menu/listadoble.rb, line 83
def introduceFinal(nodo)
    insert = false
    
    if  is_empty?
    
        @inicio=nodo
        #Para que sean nodo distinto sino final y iniciio seri ael mismo nodo
        aux =NodeDoble.new(nodo.value,nil,nil);
        @final = aux
        insert = true
      
    else 
        if @final.prev == nil
          
           @final=nodo
           @final.prev=@inicio
           @inicio.next=@final
           insert= true
         
        else
            nodo.prev=@final
            @final.next=nodo
            @final=nodo
           insert= true 
         
        end    
    end
    @cont=  @cont+1  
    return insert
end
introduceInicio(nodo) click to toggle source
# File lib/menu/listadoble.rb, line 114
def introduceInicio(nodo)
    insert = false
    
    if  is_empty?
    
        @final=nodo
        #Para que sean nodo distinto sino final y iniciio seri ael mismo nodo
        aux =NodeDoble.new(nodo.value,nil,nil);
        @inicio = aux
        insert = true
        
    else 
        if @final.prev == nil
          
           @inicio=nodo
           @final.prev=@inicio
           @inicio.next=@final
        
            insert= true
        else
            
            @inicio.prev=nodo
            nodo.next=@inicio
            @inicio= @inicio.prev
            insert= true
           
        end    
    end
    @cont=  @cont+1  
    return insert
end
is_empty?() click to toggle source

Comprobacion si la lista esta vacia

# File lib/menu/listadoble.rb, line 59
def is_empty?
    aux=false
    if @inicio==nil and @final==nil 
         aux=true
    end
    aux    
end
to_s() click to toggle source

Imprimir los objetos de la lista

# File lib/menu/listadoble.rb, line 68
def to_s
        aux=@inicio
        lee=""
       
       while aux!= nil
            
           lee =lee+ aux.value.to_s + "\n"
          
          aux= aux.next
       end
   
      return lee
end