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