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