我正在为我的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!
尝试break current
而不是return current
退出循环