class Algoru::SingleLinkedList
Public Class Methods
new()
click to toggle source
# File lib/algoru/data_structure/linked_list/single_linked_list.rb, line 15 def initialize @head = nil end
Public Instance Methods
append(value)
click to toggle source
append a node
# File lib/algoru/data_structure/linked_list/single_linked_list.rb, line 20 def append(value) if @head find_tail.next = Node.new(value) else @head = Node.new(value) end end
append_after(target, value)
click to toggle source
append node after target node
# File lib/algoru/data_structure/linked_list/single_linked_list.rb, line 57 def append_after(target, value) node = find(target) old_next = node.next node.next = Node.new(value) node.next.next = old_next end
append_before(target, value)
click to toggle source
append node before target node
# File lib/algoru/data_structure/linked_list/single_linked_list.rb, line 66 def append_before(target, value) node = find_before(target) old_next = node.next node.next = Node.new(value) node.next.next = old_next end
delete(target)
click to toggle source
delete target node
# File lib/algoru/data_structure/linked_list/single_linked_list.rb, line 75 def delete(target) if @head.value == target @head = @head.next return end node = find_before(target) node.next = node.next.next end
find(target)
click to toggle source
find node which value equals target
# File lib/algoru/data_structure/linked_list/single_linked_list.rb, line 39 def find(target) node = @head return node if node.value == target while (node = node.next) end
find_before(target)
click to toggle source
find node before target node
# File lib/algoru/data_structure/linked_list/single_linked_list.rb, line 45 def find_before(target) node = @head return false if node.next.nil? return node if node.next.value == target while (node = node.next) return node if node.next && node.next.value == target end end
find_tail()
click to toggle source
find tail node
# File lib/algoru/data_structure/linked_list/single_linked_list.rb, line 29 def find_tail node = @head return node if node.next.nil? if node.next.nil? return node end while (node = node.next) # node = node.next means point current node address to the next node address end
print()
click to toggle source
print node by order
# File lib/algoru/data_structure/linked_list/single_linked_list.rb, line 86 def print node = @head puts node puts node while (node = node.next) end