class DSA::ListIterator

ListIterator provides iteration on the list and constant time insertion and removal

Public Class Methods

new(node, list) click to toggle source
# File lib/DSA/list.rb, line 20
def initialize(node, list)
  @node = node
  @list = list
end

Public Instance Methods

insert(e) click to toggle source
# File lib/DSA/list.rb, line 37
def insert(e)
  @list.insert_node_between @node.prev, @node, ListNode.new(e)
end
next() click to toggle source
# File lib/DSA/list.rb, line 25
def next
  @node = @node.next
  raise StopIteration if @node == @list.tail || !@node
  @node.element
end
previous() click to toggle source
# File lib/DSA/list.rb, line 31
def previous
  @node = @node.prev
  raise StopIteration if @node == @list.head || !@node
  @node.element
end
remove() click to toggle source
# File lib/DSA/list.rb, line 41
def remove
  node = @list.remove_node(@node)
  node.element
end
update(e) click to toggle source
# File lib/DSA/list.rb, line 46
def update(e)
  @node.element = e
end