Skip to content

Instantly share code, notes, and snippets.

@rajeevkannav
Last active August 29, 2015 14:04
Show Gist options
  • Select an option

  • Save rajeevkannav/47f7ab1aeba41bd011b2 to your computer and use it in GitHub Desktop.

Select an option

Save rajeevkannav/47f7ab1aeba41bd011b2 to your computer and use it in GitHub Desktop.
DoubleLinkedListRuby
class Node
attr_accessor :prev_node, :next_node
def initialize(data)
@data = data
end
def has_next?()
@next_node ? true : false
end
def has_prev?()
@prev_node ? true : false
end
def data
return @data
end
def print()
puts @data.to_s
end
end
class DoublyLinkedList
def initialize(node)
@root_node = node
end
def last
pointer = @root_node
pointer = pointer.next_node while pointer.has_next?
pointer
end
def insert_tail(node)
last.next_node = node
node.prev_node = last
end
def first
pointer = @root_node
while pointer.has_prev?
pointer = pointer.prev_node
end
pointer
end
def insert_head(node)
node.next_node = first
node.prev_node = nil
@root_node = node
end
def delete(value)
pointer = @root_node
if pointer.data == value
@root_node = @root_node.next_node
@root_node.prev_node = nil
pointer = nil
else
while pointer.has_next?
pointer = pointer.next_node
if pointer.data == value
pointer.prev_node.next_node = pointer.next_node
pointer.next_node.prev_node = pointer.prev_node
return
end
end
end
end
def print()
pointer = @root_node
while pointer != nil
pointer.print
pointer = pointer.next_node
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment