Class: List
Overview
Clase que permite crear un listado de nodos. Se ha incluido el Mixin Enumerable.
Instance Attribute Summary collapse
-
#cabeza ⇒ Object
readonly
Atributos cola y cabeza que permitirán la identificación del principio y fin de la lista.
-
#cola ⇒ Object
readonly
Atributos cola y cabeza que permitirán la identificación del principio y fin de la lista.
Instance Method Summary collapse
-
#delete(nodo) ⇒ Object
Método que permite eliminar un nodo de lista independientemente de su posición en ella.
-
#each ⇒ Object
Método implementado al incluir el Mixin Enumerable y con el cual devolvemos el valor de cada nodo de la lista.
-
#initialize(nodoCabeza) ⇒ List
constructor
Inicialización de variables cabeza y cola.
-
#insert(node) ⇒ Object
Método que permite insertar un nodo en la lista.
-
#insertElements(arrayNodos) ⇒ Object
Método que recibe un conjunto de nodos y los inserta en la lista.
-
#pullHead ⇒ Object
Método que permite extraer la cabeza de la lista.
Constructor Details
#initialize(nodoCabeza) ⇒ List
Inicialización de variables cabeza y cola.
19 20 21 22 |
# File 'lib/exam/list.rb', line 19 def initialize(nodoCabeza) @cabeza = nodoCabeza @cola = @cabeza.next end |
Instance Attribute Details
#cabeza ⇒ Object (readonly)
Atributos cola y cabeza que permitirán la identificación del principio y fin de la lista.
17 18 19 |
# File 'lib/exam/list.rb', line 17 def cabeza @cabeza end |
#cola ⇒ Object (readonly)
Atributos cola y cabeza que permitirán la identificación del principio y fin de la lista.
17 18 19 |
# File 'lib/exam/list.rb', line 17 def cola @cola end |
Instance Method Details
#delete(nodo) ⇒ Object
Método que permite eliminar un nodo de lista independientemente de su posición en ella.
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
# File 'lib/exam/list.rb', line 69 def delete(nodo) if nodo == @cola contenido = @cola.value @cola = nodo.anterior @cola.next = nil else if nodo == @cabeza pullHead(nodo) else actual = @cabeza while actual != nodo actual = actual.next end anterior = actual.anterior siguiente = actual.next anterior.next = siguiente siguiente.anterior = anterior contenido = siguiente.value end end contenido end |
#each ⇒ Object
Método implementado al incluir el Mixin Enumerable y con el cual devolvemos el valor de cada nodo de la lista
100 101 102 103 104 105 106 107 |
# File 'lib/exam/list.rb', line 100 def each actual = @cabeza while actual != nil yield actual.value actual = actual.next end end |
#insert(node) ⇒ Object
Método que permite insertar un nodo en la lista
34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/exam/list.rb', line 34 def insert(node) if @cola == nil node.anterior = @cabeza @cola = node @cabeza.next = @cola else @cola.next = node @cola.next.anterior = @cola @cola = @cola.next end @cola end |
#insertElements(arrayNodos) ⇒ Object
Método que recibe un conjunto de nodos y los inserta en la lista.
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/exam/list.rb', line 49 def insertElements(arrayNodos) i=0 if @cola == nil arrayNodos[0].anterior = @cabeza @cola = arrayNodos[0] @cabeza.next = @cola i += 1 end while i<arrayNodos.length arrayNodos[i].anterior = @cola @cola.next = arrayNodos[i] @cola = @cola.next i +=1 end @cola #Se devuelve el ultimo nodo insertado end |
#pullHead ⇒ Object
Método que permite extraer la cabeza de la lista
24 25 26 27 28 29 30 31 32 |
# File 'lib/exam/list.rb', line 24 def pullHead if @cabeza != nil contenido = @cabeza.value @cabeza = @cabeza.next end contenido end |