Class: DSA::ListIterator

Inherits:
Object
  • Object
show all
Defined in:
lib/DSA/list.rb

Overview

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

Instance Method Summary collapse

Constructor Details

#initialize(node, list) ⇒ ListIterator

Returns a new instance of ListIterator.



20
21
22
23
# File 'lib/DSA/list.rb', line 20

def initialize(node, list)
  @node = node
  @list = list
end

Instance Method Details

#insert(e) ⇒ Object



37
38
39
# File 'lib/DSA/list.rb', line 37

def insert(e)
  @list.insert_node_between @node.prev, @node, ListNode.new(e)
end

#nextObject

Raises:

  • (StopIteration)


25
26
27
28
29
# File 'lib/DSA/list.rb', line 25

def next
  @node = @node.next
  raise StopIteration if @node == @list.tail || !@node
  @node.element
end

#previousObject

Raises:

  • (StopIteration)


31
32
33
34
35
# File 'lib/DSA/list.rb', line 31

def previous
  @node = @node.prev
  raise StopIteration if @node == @list.head || !@node
  @node.element
end

#removeObject



41
42
43
44
# File 'lib/DSA/list.rb', line 41

def remove
  node = @list.remove_node(@node)
  node.element
end

#update(e) ⇒ Object



46
47
48
# File 'lib/DSA/list.rb', line 46

def update(e)
  @node.element = e
end