class Lista

Attributes

n_elementos[R]
nodo_final[R]
nodo_inicial[R]

Public Class Methods

new() click to toggle source
# File lib/bibliogem/Lista.rb, line 9
def initialize
        @n_elementos = 0
        @nodo_inicial = Nodo.new()
        @nodo_final = @nodo_inicial
end

Public Instance Methods

delete(pos) click to toggle source
# File lib/bibliogem/Lista.rb, line 68
def delete(pos)
        if(pos < @n_elementos)
                aux = @nodo_inicial
                for i in 0..(pos-1)
                        aux=aux[:siguiente]
                end
                delete = aux[:siguiente]
                aux2=delete[:siguiente]
                aux2[:anterior]=aux
                aux[:siguiente]=aux2
                @n_elementos-=1
                return delete
        else
                puts "No hay tantos elementos."
                return nil
        end
end
each() { |value| ... } click to toggle source
# File lib/bibliogem/Lista.rb, line 14
def each
        value = @nodo_inicial
        yield value
        value = value[:siguiente]
end
insert(pos, valor) click to toggle source
# File lib/bibliogem/Lista.rb, line 53
def insert(pos, valor)
        if(pos < @n_elementos)
                aux = @nodo_inicial
                for i in 0..pos
                        aux=aux[:siguiente]
                end
                insert = Nodo.new(valor, aux[:siguiente], aux)
                aux2=aux[:siguiente]
                aux2[:anterior]=insert
                aux[:siguiente]=insert
                @n_elementos+=1
        else
                puts "No hay tantos elementos."
        end
end
ordenar() click to toggle source
# File lib/bibliogem/Lista.rb, line 125
def ordenar
        if n_elementos <= 1
                return
        end
        fin=false
        while fin == false
                fin=true
                x1=@nodo_inicial
                x2=x1[:siguiente]
                while x2 != nil
                        if(x1[:valor] > x2[:valor])
                                x1[:valor], x2[:valor] = x2[:valor], x1[:valor]
                                fin=false
                        end
                        x1=x2
                        x2=x2[:siguiente]
                end
        end
end
pop_final() click to toggle source
# File lib/bibliogem/Lista.rb, line 105
def pop_final
        if(@n_elementos == 0)
                puts "La lista esta vacia"
                return nil
        elsif(@n_elementos == 1)
                ret = Nodo.new(@nodo_inicial[:valor], nil, nil)
                @nodo_incial[:valor]=nil
                @nodo_final = @nodo_inicial
                @n_elementos-=1
                return ret
        elsif(@n_elementos > 1)
                ret = Nodo.new(@nodo_final[:valor], nil, @nodo_final[:anterior])
                aux=@nodo_final
                @nodo_final=@nodo_final[:anterior]
                @nodo_final[:siguiente]=nil
                aux[:anterior]=nil
                @n_elementos-=1
                return ret
        end
end
pop_inicio() click to toggle source
# File lib/bibliogem/Lista.rb, line 85
def pop_inicio
        if(@n_elementos == 0)
                puts "La lista esta vacia"
                return nil
        elsif(@n_elementos == 1)
                ret = Nodo.new(@nodo_inicial[:valor], nil, nil)
                @nodo_inicial[:valor]=nil
                @nodo_final = @nodo_inicial
                @n_elementos-=1
                return ret
        elsif(@n_elementos > 1)
                ret = Nodo.new(@nodo_inicial[:valor], @nodo_inicial[:siguiente], nil)
                aux=@nodo_inicial
                @nodo_inicial=@nodo_inicial[:siguiente]
                @nodo_inicial[:anterior]=nil
                aux[:siguiente]=nil
                @n_elementos-=1
                return ret
        end
end
push_final(valor) click to toggle source
# File lib/bibliogem/Lista.rb, line 36
def push_final(valor)
        if(@n_elementos == 0)
                @nodo_inicial[:valor]=valor
                @nodo_final = @nodo_inicial
                @n_elementos+=1
        elsif(@n_elementos == 1)
                aux = Nodo.new(valor, nil, @nodo_inicial)
                @nodo_inicial[:siguiente]=aux
                @nodo_final = aux
                @n_elementos+=1
        elsif(@n_elementos >= 1)
                aux = Nodo.new(valor,nil,@nodo_final)
                @nodo_final[:siguiente]=aux
                @nodo_final=aux
                @n_elementos+=1
        end
end
push_inicio(valor) click to toggle source
# File lib/bibliogem/Lista.rb, line 19
def push_inicio(valor)
        if @n_elementos == 0
                @nodo_inicial[:valor]=valor
                @nodo_final = @nodo_inicial
                @n_elementos+=1
        elsif @n_elementos == 1
                aux = Nodo.new(valor, @nodo_final, nil)
                @nodo_inicial = aux
                @nodo_final[:anterior]=@nodo_inicial
                @n_elementos+=1
        elsif @n_elementos >= 1
                aux = Nodo.new(valor, @nodo_final, nil)
                @nodo_inicial[:anterior]=aux
                @nodo_inicial=aux
                @n_elementos+=1
        end
end