class Linkedlist::List
Lista de menús dietéticos.
Attributes
head[R]
Nodo cabeza de la lista.
size[R]
Tamaño de la lista.
tail[R]
Nodo cola de la lista.
Public Class Methods
new()
click to toggle source
Inicializa la lista vacía.
# File lib/linkedlist/linkedlist.rb, line 224 def initialize() @head = nil @tail = nil @size = 0 end
Public Instance Methods
each() { |value| ... }
click to toggle source
Itera la lista, ejecutando el bloque pasado pasándole como parámetro el valor de cada nodo.
# File lib/linkedlist/linkedlist.rb, line 288 def each nodo = @head until nodo.nil? yield nodo.value nodo = nodo.next_node end end
empty?()
click to toggle source
Devuelve si la lista está vacía.
# File lib/linkedlist/linkedlist.rb, line 231 def empty?() return (@head == nil) end
pop()
click to toggle source
Extrae y devuelve el menú del principio de la lista.
# File lib/linkedlist/linkedlist.rb, line 268 def pop() raise RuntimeError, "[List.pop]: No se puede extraer elementos de una lista vacía" if empty?() nodo = @head if @head.equal?(@tail) @head = nil @tail = nil else @head = @head.next_node @head.prev_node = nil end @size -= 1 return nodo.value end
push(ref)
click to toggle source
Inserta el menú ref al final de la lista.
# File lib/linkedlist/linkedlist.rb, line 250 def push(ref) if empty?() return push_empty(ref) else nodo = Node.new(ref, nil, @tail) @tail.next_node = nodo @tail = nodo @size += 1 return self end end
push_multi(*refs)
click to toggle source
Inserta múltiples elementos al final de la lista.
# File lib/linkedlist/linkedlist.rb, line 263 def push_multi(*refs) refs.each { |ref| push(ref)} end
Private Instance Methods
push_empty(ref)
click to toggle source
Inserta un menú en la lista vacía.
# File lib/linkedlist/linkedlist.rb, line 236 def push_empty(ref) raise RuntimeError, "[List.push_empty]: Lista no vacía" unless empty?() nodo = Node.new(ref) @head = nodo @tail = nodo @size += 1 return self end