无法突破简单的 while 循环



我正在为我的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退出循环

相关内容

  • 没有找到相关文章

最新更新