class P5_T_34::LList

Descripción: Clase lista enlazada.

almacena un nodo top como cabeza de la 
misma y el número de elementos que 
contiene.

Attributes

size[R]
tail[R]
top[R]

Public Class Methods

new(topI=nil) click to toggle source
# File lib/P5_T_34/LList.rb, line 20
def initialize (topI=nil)
  #raise ArgumentError, "No puede ser nil" unless (topI != nil)
  if (topI != nil) 
    init(topI)
  else
    @top = nil # cabeza de la lista enlazada, de tipo interno Node
    @tail = @top # cola de la lista enlazada, último nodo
    @size = 0 # Número de nodos de la lista
  end
end
to_node(value) click to toggle source

Descripción: Método de clase encargado de convertir

cualquier tipo de dato de entrada a un objeto de
tipo Node. En caso de que el objeto de entrada ya
sea de tipo Node se retorna el mismo objeto.
# File lib/P5_T_34/LList.rb, line 43
def self.to_node (value)
   if (value.is_a? Node) then return value end
   
   return Node.new(value, nil, nil)
end

Public Instance Methods

[](key) click to toggle source

Descripión: sobrecarga del operador de acceso []

para la clase
# File lib/P5_T_34/LList.rb, line 82
def [] (key)
   #TODO
end
each() { |value| ... } click to toggle source

Método each.

# File lib/P5_T_34/LList.rb, line 87
def each
  aux = top
  while aux != nil do
    yield aux.value
    aux = aux.next
  end
end
init(topI) click to toggle source

Función auxiliar para la inicialización de la lista enlazada

# File lib/P5_T_34/LList.rb, line 32
def init(topI)
  raise RuntimeError, "Lista ya iniciada." unless (@top == nil)
  @top = LList::to_node(topI)
  @tail = @top
  @size = 1
end
pop() click to toggle source

Descripción: Método que retorna el primer elemento y lo elimina de la lista

# File lib/P5_T_34/LList.rb, line 67
def pop
  aux = @top
  if (aux != nil) 
    @top = @top.next
    @size -= 1
    if (@top != nil) then
      @top.prev = nil
    end
  end
  return aux
   
end
push(newNode, *args) click to toggle source

Descripción: Método push que permite insertar uno o

varios elementos en la lista
# File lib/P5_T_34/LList.rb, line 51
def push (newNode, *args)
  #raise ArgumentError, "Los elementos deben ser de tipo Node" unless newNode.is_a? Node #@top.class
  if (@top == nil) 
    init(newNode)
  else
    @tail.next = LList::to_node(newNode)
    @tail.next.prev = @tail
    @tail = @tail.next
    @size += 1
  end
  args.each { |x| push(x) }
  @size
end