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