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

Attributes

head[RW]

Atributo head para mostrar el inicio de la lista Atributo tail para mostrar el final de la lista

tail[RW]

Atributo head para mostrar el inicio de la lista Atributo tail para mostrar el final de la lista

Public Class Methods

new() click to toggle source

Metodo par inicializar la clase

# File lib/List.rb, line 90
def initialize
  @head = nil
  @tail = nil
end

Public Instance Methods

each() { |dev_value| ... } click to toggle source

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
ins_final(valor) click to toggle source

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
ins_inicio(valor) click to toggle source

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
length() click to toggle source

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
sup_final() click to toggle source

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
sup_inicio() click to toggle source

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
to_s() click to toggle source

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