class List
Clase List
¶ ↑
Definición de la clase Lista que permite almacenar, trabajar y representar una lista doblemente enlazada por pantalla mediante los siguientes metodos
-
metodo each
-
metodo initialize
-
metodo
ins_inicio
-
metodo
ins_final
-
metodo
sup_inicio
-
metodo
sup_final
-
metodo
to_s
-
metodo length
Attributes
Atributo head para mostrar el inicio de la lista Atributo tail para mostrar el final de la lista
Atributo head para mostrar el inicio de la lista Atributo tail para mostrar el final de la lista
Public Class Methods
Metodo par inicializar la clase
# File lib/List.rb, line 90 def initialize @head = nil @tail = nil end
Public Instance Methods
Metodo each para recorrer la lista y hacer uso del modulo enumerable
# File lib/List.rb, line 81 def each n = @head while n != nil yield n.dev_value n = n.dev_sig end end
Metodo para insertar un nodo al final de la lista
# File lib/List.rb, line 121 def ins_final(valor) if @tail != nil @tail = Node.new(valor, nil, @tail) n = @tail.dev_ant n.mod_sig(@tail) else @head = Node.new(valor, nil, nil) @tail = @head end end
Metodo para insertar un nodo al principio de la lista
# File lib/List.rb, line 96 def ins_inicio(valor) if @head != nil && @head.dev_sig != nil n = @head @head = Node.new(valor, n, nil) n.mod_ant(@head) elsif @head != nil n = @head @head = Node.new(valor, n, nil) n.mod_ant(@head) @tail = n else @head = Node.new(valor, nil, nil) @tail = @head end end
Metodo para obtener el numero de nodos de una lista
# File lib/List.rb, line 162 def length if @head == nil num = 0 else n = @head num = 1 while n.dev_sig != nil num += 1 n = n.dev_sig end end num end
Metodo para eliminar un nodo del final de la lista
# File lib/List.rb, line 133 def sup_final @tail = @tail.dev_ant if @tail != nil @tail.mod_sig(nil) else @head = @tail end end
Metodo para eliminar un nodo del principio de la lista
# File lib/List.rb, line 113 def sup_inicio @head = @head.dev_sig if @head != nil @head.mod_ant(nil) end end
Metodo para representar por pantalla una lista enlazada
# File lib/List.rb, line 143 def to_s s = "NIL <-> " if @head == nil s << "NIL" elsif @head.dev_sig == nil s << "#{@head.to_s}<-> NIL" else nodo = @head while nodo.dev_sig != nil s << "#{nodo.to_s}" nodo = nodo.dev_sig end s << "#{nodo.to_s}" s << "NIL" end return s end