class ListaDoble
Clase ListaDoble
lista de nodo doble se recorre en cualquier sentido
Attributes
cont[R]
final[R]
inicio[R]
Public Class Methods
new()
click to toggle source
# File lib/menu/listadoble.rb, line 7 def initialize() @inicio = nil @final = nil @cont = 0 end
Public Instance Methods
each() { |value| ... }
click to toggle source
# File lib/menu/listadoble.rb, line 13 def each aux=@inicio while aux!= nil yield aux.value aux= aux.next end end
extraeFinal()
click to toggle source
Extraer el nodo final y eliminarlo de mi lista
# 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()
click to toggle source
Extraer el nodo inicio y eliminarlo de mi lista
# 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)
click to toggle source
Insertar el nodo por el comienzo y comprueba si la insertar a tenido exido
# 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)
click to toggle source
# 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)
click to toggle source
Introduce siempre por el nodo final
# 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)
click to toggle source
# 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?()
click to toggle source
Comprobacion si la lista esta vacia
# 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()
click to toggle source
Imprimir los objetos de la lista
# 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