Class: List
Overview
Define una clase de lista doblemente enlazada
Instance Attribute Summary collapse
-
#head ⇒ Object
Returns the value of attribute head.
-
#tail ⇒ Object
Returns the value of attribute tail.
Instance Method Summary collapse
-
#each ⇒ Object
Recorre los elementos del vector para poder usar los funciones Enumerable.
-
#empty ⇒ Object
Devuleve true si la lista está vacía y false si contiene al menos un elemento.
-
#extract_first ⇒ Object
Elimina el primer elemento de la lista y lo devuelve.
-
#extract_last ⇒ Object
Elimina el último elemento de la lista y lo devuelve.
-
#initialize ⇒ List
constructor
Constructor de la clase, crea una lista vacía.
-
#insert_first(value) ⇒ Object
Inserta un nuevo nodo, que se crea a partir del valor pasado por parámetro, por el principio.
-
#insert_last(value) ⇒ Object
Inserta un nuevo nodo, que se crea a partir del valor pasado por parámetro, por el final.
-
#insert_multi_first(values) ⇒ Object
Usando la función insert_first permite pasar un vector de valores e insertarlos.
-
#insert_multi_last(values) ⇒ Object
Usando la función insert_last permite pasar un vector de valores e insertarlos.
Constructor Details
#initialize ⇒ List
Constructor de la clase, crea una lista vacía
8 9 10 11 12 13 |
# 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 |
Instance Attribute Details
#head ⇒ Object
Returns the value of attribute head
6 7 8 |
# File 'lib/dieta/lista.rb', line 6 def head @head end |
#tail ⇒ Object
Returns the value of attribute tail
6 7 8 |
# File 'lib/dieta/lista.rb', line 6 def tail @tail end |
Instance Method Details
#each ⇒ Object
Recorre los elementos del vector para poder usar los funciones Enumerable
89 90 91 92 93 94 95 |
# File 'lib/dieta/lista.rb', line 89 def each aux = @head while aux != nil yield aux.value aux = aux.next end end |
#empty ⇒ Object
Devuleve true si la lista está vacía y false si contiene al menos un elemento
15 16 17 18 19 20 21 |
# File 'lib/dieta/lista.rb', line 15 def empty if @head == nil true else false end end |
#extract_first ⇒ Object
Elimina el primer elemento de la lista y lo devuelve
23 24 25 26 27 28 29 30 31 |
# 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 ⇒ Object
Elimina el último elemento de la lista y lo devuelve
33 34 35 36 37 38 39 40 41 |
# 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) ⇒ Object
Inserta un nuevo nodo, que se crea a partir del valor pasado por parámetro, por el principio
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# 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) ⇒ Object
Inserta un nuevo nodo, que se crea a partir del valor pasado por parámetro, por el final
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
# 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) ⇒ Object
Usando la función insert_first permite pasar un vector de valores e insertarlos
77 78 79 80 81 |
# 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) ⇒ Object
Usando la función insert_last permite pasar un vector de valores e insertarlos
83 84 85 86 87 |
# 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 |