class List
Attributes
head[R]
tail[R]
Public Class Methods
new()
click to toggle source
inicializamos la lista doblemente enlazada con un head y un tail
# File lib/practica6/practica7.rb, line 6 def initialize() @head=Node.new() @tail=@head end
Public Instance Methods
add(other)
click to toggle source
metodo que inserta un elemento al principio de la lista
# File lib/practica6/practica7.rb, line 26 def add(other) nuevo=Node.new(other,nil,nil) if(@head==nil) @head=nuevo @head.next=nil @head.prev=nil @tail=@head else nuevo.next=@head @head.prev=nuevo @head=nuevo end end
add_end(other)
click to toggle source
metodo que inserta un elemento al final de la lista
# File lib/practica6/practica7.rb, line 48 def add_end(other) nuevo=Node.new(other,nil,nil) if(@head==@tail) if(@head==nil) @tail=nuevo @head=@tail else @tail.next=nuevo nuevo.prev=@tail @tail=nuevo @head.next=@tail end else @tail.next=nuevo nuevo.prev=@tail @tail=nuevo end end
add_end_mult(other)
click to toggle source
metodo que inserta varios elementos al final de la lista
# File lib/practica6/practica7.rb, line 85 def add_end_mult(other) for i in 0..other.length-1 add_end(other[i]) end end
add_mult(other)
click to toggle source
metodo que aƱade varios elementos al principio de la lista
# File lib/practica6/practica7.rb, line 42 def add_mult(other) for i in 0..other.length-1 add(other[i]) end end
each() { |value| ... }
click to toggle source
metodo each que recorre cada nodo del vector para poder usar funciones de Enumerable
# File lib/practica6/practica7.rb, line 12 def each aux=@head while aux.next!=nil yield aux.value aux=aux.next end end
get_first()
click to toggle source
metodo que extrae el primer elemento de la lista
# File lib/practica6/practica7.rb, line 20 def get_first other=@head @head=@head.next other.value end
get_last()
click to toggle source
metodo que extrae el ultimo elemento de la lista
# File lib/practica6/practica7.rb, line 67 def get_last result="" if(@head==@tail) if(@head==nil) result=nil else result=@tail.value @tail=nil @head=nil end else result=@tail.value @tail=@tail.prev @tail.next=nil end result end