Class: ListaDoble
Overview
Clase ListaDoble lista de nodo doble se recorre en cualquier sentido
Instance Attribute Summary collapse
-
#cont ⇒ Object
readonly
Returns the value of attribute cont.
-
#final ⇒ Object
readonly
Returns the value of attribute final.
-
#inicio ⇒ Object
readonly
Returns the value of attribute inicio.
Instance Method Summary collapse
- #each ⇒ Object
-
#extraeFinal ⇒ Object
Extraer el nodo final y eliminarlo de mi lista.
-
#extraeInicio ⇒ Object
Extraer el nodo inicio y eliminarlo de mi lista.
-
#initialize ⇒ ListaDoble
constructor
A new instance of ListaDoble.
-
#insertarFinal(nodos) ⇒ Object
Insertar el nodo por el comienzo y comprueba si la insertar a tenido exido.
- #insertarInicio(nodos) ⇒ Object
-
#introduceFinal(nodo) ⇒ Object
Introduce siempre por el nodo final.
- #introduceInicio(nodo) ⇒ Object
-
#is_empty? ⇒ Boolean
Comprobacion si la lista esta vacia.
-
#to_s ⇒ Object
Imprimir los objetos de la lista.
Constructor Details
#initialize ⇒ ListaDoble
Returns a new instance of ListaDoble.
7 8 9 10 11 |
# File 'lib/menu/listadoble.rb', line 7 def initialize() @inicio = nil @final = nil @cont = 0 end |
Instance Attribute Details
#cont ⇒ Object (readonly)
Returns the value of attribute cont.
6 7 8 |
# File 'lib/menu/listadoble.rb', line 6 def cont @cont end |
#final ⇒ Object (readonly)
Returns the value of attribute final.
6 7 8 |
# File 'lib/menu/listadoble.rb', line 6 def final @final end |
#inicio ⇒ Object (readonly)
Returns the value of attribute inicio.
6 7 8 |
# File 'lib/menu/listadoble.rb', line 6 def inicio @inicio end |
Instance Method Details
#each ⇒ Object
13 14 15 16 17 18 19 20 21 |
# File 'lib/menu/listadoble.rb', line 13 def each aux=@inicio while aux!= nil yield aux.value aux= aux.next end end |
#extraeFinal ⇒ Object
Extraer el nodo final y eliminarlo de mi lista
172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 |
# File 'lib/menu/listadoble.rb', line 172 def extraeFinal aux=NodeDoble.new(@final.value,nil,nil) if @final==nil aux=nil @final=nil else if @final.prev == nil @final=nil @inicio=nil else auxdos=@final @final = @final.prev auxdos.prev = nil end @cont= @cont-1 end aux end |
#extraeInicio ⇒ Object
Extraer el nodo inicio y eliminarlo de mi lista
147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 |
# File 'lib/menu/listadoble.rb', line 147 def extraeInicio aux=NodeDoble.new(@inicio.value,nil,nil) if @inicio==nil aux=nil @inicio=nil else if @final.prev == nil @final=nil @inicio=nil else auxdos=@inicio @inicio = @inicio.next auxdos.next = nil end @cont= @cont-1 end aux end |
#insertarFinal(nodos) ⇒ Object
Insertar el nodo por el comienzo y comprueba si la insertar a tenido exido
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/menu/listadoble.rb', line 24 def insertarFinal (nodos) insert = false if nodos.instance_of?Array nodos.each do |x| introduceFinal(x) end insert = true else introduceFinal(nodos) insert = true end return insert end |
#insertarInicio(nodos) ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/menu/listadoble.rb', line 41 def insertarInicio (nodos) insert = false if nodos.instance_of?Array nodos.each do |x| introduceInicio(x) end insert = true else introduceInicio(nodos) insert = true end return insert end |
#introduceFinal(nodo) ⇒ Object
Introduce siempre por el nodo final
83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 |
# File 'lib/menu/listadoble.rb', line 83 def introduceFinal(nodo) insert = false if is_empty? @inicio=nodo #Para que sean nodo distinto sino final y iniciio seri ael mismo nodo aux =NodeDoble.new(nodo.value,nil,nil); @final = aux insert = true else if @final.prev == nil @final=nodo @final.prev=@inicio @inicio.next=@final insert= true else nodo.prev=@final @final.next=nodo @final=nodo insert= true end end @cont= @cont+1 return insert end |
#introduceInicio(nodo) ⇒ Object
114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 |
# File 'lib/menu/listadoble.rb', line 114 def introduceInicio(nodo) insert = false if is_empty? @final=nodo #Para que sean nodo distinto sino final y iniciio seri ael mismo nodo aux =NodeDoble.new(nodo.value,nil,nil); @inicio = aux insert = true else if @final.prev == nil @inicio=nodo @final.prev=@inicio @inicio.next=@final insert= true else @inicio.prev=nodo nodo.next=@inicio @inicio= @inicio.prev insert= true end end @cont= @cont+1 return insert end |
#is_empty? ⇒ Boolean
Comprobacion si la lista esta vacia
59 60 61 62 63 64 65 |
# File 'lib/menu/listadoble.rb', line 59 def is_empty? aux=false if @inicio==nil and @final==nil aux=true end aux end |
#to_s ⇒ Object
Imprimir los objetos de la lista
68 69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/menu/listadoble.rb', line 68 def to_s aux=@inicio lee="" while aux!= nil lee =lee+ aux.value.to_s + "\n" aux= aux.next end return lee end |