无法摆脱简单的while循环

时间:2014-06-18 22:50:53

标签: ruby loops linked-list

我正在为我的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!

1 个答案:

答案 0 :(得分:0)

尝试使用break current代替return current来摆脱循环。