class Linkedlist::Lista
Clase Lista
Attributes
longitud[R]
primero[RW]
Public Class Methods
new()
click to toggle source
# File lib/linkedlist/linkedlist.rb, line 10 def initialize @longitud = 0 @primero = Node::Nodo.new('HEAD') end
Public Instance Methods
pop()
click to toggle source
Elimina el último elemento de la lista y devuelve el valor (value) de dicho elemento
# File lib/linkedlist/linkedlist.rb, line 28 def pop fail 'Lista vacia' if @longitud < 1 nodo_actual = @primero done = false until done if nodo_actual.sig.sig.nil? done = true else nodo_actual = nodo_actual.sig end end to_return = nodo_actual.sig.val nodo_actual.sig = nil @longitud -= 1 to_return end
push(value)
click to toggle source
Añade un valor al final de la lista Devuelve 'self' es decir, el objeto tipo Lista
que llama a 'push'
# File lib/linkedlist/linkedlist.rb, line 17 def push(value) node = Node::Nodo.new(value) nodo_actual = @primero nodo_actual = nodo_actual.sig until nodo_actual.sig.nil? nodo_actual.sig = node @longitud += 1 self end
push_array(*items)
click to toggle source
Añade un conjunto de valores a la lista, pasado por array y devuelve al objeto llamante, de la clase Lista
# File lib/linkedlist/linkedlist.rb, line 66 def push_array(*items) @longitud = items.length @primero = Node::Nodo.new(items.shift) items.each { |item| push(item) } end
push_referencia(obj)
click to toggle source
Métodos push y pop para objetos de tipo Referencia
# File lib/linkedlist/linkedlist.rb, line 73 def push_referencia(obj) node = Node::Nodo.new(obj) nodo_actual = @primero nodo_actual = nodo_actual.sig until nodo_actual.sig.nil? nodo_actual.sig = node @longitud += 1 self end
shift()
click to toggle source
Elimina el primer elemento de la lista y devuelve su valor
# File lib/linkedlist/linkedlist.rb, line 47 def shift fail 'Lista vacia' if @longitud < 1 to_return = @primero.sig.val @primero.sig = @primero.sig.sig @longitud -= 1 to_return end
unshift(value)
click to toggle source
Añade un nodo al principio de la lista y devuelve al objeto llamante, de la clase Lista
# File lib/linkedlist/linkedlist.rb, line 57 def unshift(value) node = Node::Nodo.new(value, @primero.sig) @primero.sig = node @longitud += 1 self end