为链表节点重构insert_after和insert_before方法的最佳方法是什么?

时间:2016-05-29 23:15:17

标签: ruby data-structures linked-list

我已经尝试过使用send方法,但最终几乎无法读取并且只要前面的代码。在Ruby中有一种简单的方法可以像这样重构代码吗?

def insert_before(data)
  node = Node.new(data)
  node.next = self
  node.prev = @prev

  @prev.next = node unless @prev.nil?

  @prev = node
end

def insert_after(data)
  node = Node.new(data)
  node.prev = self
  node.next = @next

  @next.prev = node unless @next.nil?

  @next = node
end

1 个答案:

答案 0 :(得分:1)

我认为你拥有的很好,但你可能想把这两种方法的常用位放在一个单独的方法中。

def insert_before(data)
  node = insert_node(data, self, @prev)
  @prev.next = node unless @prev.nil?
  @prev = node
end

def insert_after(data)
  node = insert_node(data, @next, self)
  @next.prev = node unless @next.nil?
  @next = node
end

def insert_node(data, from, to)
  node = Node.new(data)
  node.next = to
  node.prev = from
  node
end
相关问题