Class: List

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/exam/list.rb

Overview

Clase que permite crear un listado de nodos. Se ha incluido el Mixin Enumerable.

Instance Attribute Summary collapse

Instance Method Summary collapse

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

#cabezaObject (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

#colaObject (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

#eachObject

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

#pullHeadObject

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