class List
Define una clase de lista doblemente enlazada
Attributes
head[RW]
tail[RW]
Public Class Methods
new()
click to toggle source
Constructor de la clase, crea una lista vacía
# File lib/dieta/lista.rb, line 8 def initialize # Atributo que es igual al primer elemento de la lista @head = nil # Atributo que es igual al último elemento de la lista @tail = nil end
Public Instance Methods
each() { |value| ... }
click to toggle source
Recorre los elementos del vector para poder usar los funciones Enumerable
# File lib/dieta/lista.rb, line 89 def each aux = @head while aux != nil yield aux.value aux = aux.next end end
empty()
click to toggle source
Devuleve true si la lista está vacía y false si contiene al menos un elemento
# File lib/dieta/lista.rb, line 15 def empty if @head == nil true else false end end
extract_first()
click to toggle source
Elimina el primer elemento de la lista y lo devuelve
# File lib/dieta/lista.rb, line 23 def extract_first if empty() nil else nodeAux = @head @head = @head.next nodeAux.value end end
extract_last()
click to toggle source
Elimina el último elemento de la lista y lo devuelve
# File lib/dieta/lista.rb, line 33 def extract_last if empty() nil else nodeAux = @tail @tail = @tail.prev nodeAux.value end end
insert_first(value)
click to toggle source
Inserta un nuevo nodo, que se crea a partir del valor pasado por parámetro, por el principio
# File lib/dieta/lista.rb, line 43 def insert_first(value) newNode = Node.new(value, nil, nil) if empty() @head = newNode @tail = newNode else aux = @head @head = newNode @head.next = aux if aux == @tail @tail.prev = @head else aux.prev = @head end end end
insert_last(value)
click to toggle source
Inserta un nuevo nodo, que se crea a partir del valor pasado por parámetro, por el final
# File lib/dieta/lista.rb, line 60 def insert_last(value) newNode = Node.new(value, nil, nil) if empty() @head = newNode @tail = newNode else aux = @tail @tail = newNode @tail.prev = aux if @head == aux @head.next = @tail else aux.next = @tail end end end
insert_multi_first(values)
click to toggle source
Usando la función insert_first
permite pasar un vector de valores e insertarlos
# File lib/dieta/lista.rb, line 77 def insert_multi_first(values) for i in 0..values.length-1 insert_first(values[i]) end end
insert_multi_last(values)
click to toggle source
Usando la función insert_last
permite pasar un vector de valores e insertarlos
# File lib/dieta/lista.rb, line 83 def insert_multi_last(values) for i in 0..values.length-1 insert_last(values[i]) end end