我正在为我的DoublyLinkedList类编写搜索方法:
def search(val)
current = @head
while current != nil
if current.node_id == val
return current
else
current = current.prev_node
end
end
return nil
end
然而,当我尝试使用这种搜索方法时,我似乎陷入了while循环。
以下是我的DoublyLinkedList和Node类供参考:
class Node
attr_accessor :node_id, :next_node, :prev_node
def initialize(node_id)
@node_id = node_id
@prev_node = nil
@next_node = nil
end
end
class DoublyLinkedList
attr_accessor :head, :size
def initialize
@size = 0
@head = nil
end
def add(node)
if @head == nil
@head = node
else
node.prev_node = @head
@head.next_node = node
@head = node
end
@size += 1
end
def search(val)
current = @head
while current != nil
if current.node_id == val
return current
break
else
current = current.prev_node
end
end
return nil
end
end
以下是我测试方法的方法:
linked_list = DoublyLinkedList.new
node1 = Node.new '1'
linked_list.add(node1)
puts linked_list.search(node1.node_id)
很抱歉,对于这样一个简单问题的详细程度(?)但我不知道为什么我的while循环不会中断 - 它应该返回找到的节点的node_id!
答案 0 :(得分:0)
尝试使用break current
代替return current
来摆脱循环。