class List2

Gestionar una Lista doblemente enlazada

Public Instance Methods

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

Lee lista de nodos

# File lib/bibliografia/lista2_impl.rb, line 9
def each
  n = @head
  while n != nil
    yield n.value
    n = n.next
  end  
end
extract_first() click to toggle source

Extrae primer elemento

# File lib/bibliografia/lista2_impl.rb, line 47
def extract_first
  e = @head
  @head = e.next
  if @head != nil
    @head.prev = nil
  else
    @tail = @head
  end
  e
end
extract_last() click to toggle source

Extrae Ășltimo elemento

# File lib/bibliografia/lista2_impl.rb, line 59
def extract_last
  e = @tail
  @tail = e.prev
  if @tail != nil
    @tail.next = nil
  else
    @head = @tail
  end
  e
end
ins_end(value) click to toggle source

Insertar un nodo al final de la lista

# File lib/bibliografia/lista2_impl.rb, line 35
def ins_end(value)
  if @tail != nil
    @tail = Node.new(value, nil, @tail)
    n = @tail.prev
    n.next = @tail
  else
    @head = Node.new(value, nil, nil)
    @tail = @head
  end
end
ins_start(value) click to toggle source

Inserta un nodo al principio de la lista

# File lib/bibliografia/lista2_impl.rb, line 18
def ins_start(value)
  if @head != nil && @head.next != nil
    n = @head
    @head = Node.new(value, n, nil)
    n.prev = @head
  elsif @head != nil
    n = @head
    @head = Node.new(value, n, nil)
    n.prev = @head
    @tail = n
  else
    @head = Node.new(value, nil, nil)
    @tail = @head
  end
end