class List
Clase que permite crear un listado de nodos. Se ha incluido el Mixin Enumerable.
Attributes
cabeza[R]
Atributos cola y cabeza que permitirán la identificación del principio y fin de la lista.
cola[R]
Atributos cola y cabeza que permitirán la identificación del principio y fin de la lista.
Public Class Methods
new(nodoCabeza)
click to toggle source
Inicialización de variables cabeza y cola.
# File exam/list.rb, line 19 def initialize(nodoCabeza) @cabeza = nodoCabeza @cola = @cabeza.next end
Public Instance Methods
delete(nodo)
click to toggle source
Método que permite eliminar un nodo de lista independientemente de su posición en ella.
# File 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() { |value| ... }
click to toggle source
Método implementado al incluir el Mixin Enumerable y con el cual devolvemos el valor de cada nodo de la lista
# File exam/list.rb, line 100 def each actual = @cabeza while actual != nil yield actual.value actual = actual.next end end
insert(node)
click to toggle source
Método que permite insertar un nodo en la lista
# File 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)
click to toggle source
Método que recibe un conjunto de nodos y los inserta en la lista.
# File 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()
click to toggle source
Método que permite extraer la cabeza de la lista
# File exam/list.rb, line 24 def pullHead if @cabeza != nil contenido = @cabeza.value @cabeza = @cabeza.next end contenido end