我正在尝试在ruby上进行LinkedList分配,并且在执行删除方法时遇到了困难,因此我在google中搜索并从删除方法中获取了代码。 我无法理解的是其背后的逻辑,我无法理解其工作原理,以及删除它的逻辑工作原理。
class Node
attr_accessor :value, :next_node
def initialize(value, next_node = nil)
@value = value
@next_node = next_node
end
end
class LinkedList
def add(number)
new_node = Node.new(number)
if @head.nil?
@head = new_node
@tail = new_node
else
@tail.next_node = new_node
@tail = new_node
end
end
def get(index)
#your code here
node = @head
while index > 0 && node
node = node.next_node
index -= 1
end
node.value
end
def add_at (index, number)
if @head.nil?
@head = Node.new(number)
@tail = Node.new(number)
else
first = @head
index -= 1
while index > 0 && first
first = first.next_node
index -= 1
end
old_next = first.next_node
first.next_node = Node.new(number)
first.next_node.next_node = old_next
end
end
def remove (index)
node = @head
index -= 1
while index > 0 && node
node = node.next_node
index -= 1
end
node.next_node = node.next_node.next_node
end
end