如何在Ruby中创建链表?

How to create a linked list in Ruby?

我需要创建一个链表,其中的输入如下所示:

9
5
2.3
8
-1

并且输出应该是同一行上用逗号分隔的列表元素。

基本上我知道我必须创建 2 个 classes,一个名为 "Linked List" 的 class 代表整个列表,另一个 class 名为 "Node" 表示列表中的每个元素,但我完全迷路了,我什至不知道如何 "save" 不同节点中的每个元素,我以前从未处理过动态数据结构。任何帮助将不胜感激

Ruby 通过引用存储 Objects(classes 的实例),并通过值存储文字值(整数、符号等)。所以如果你想要整数链表,你只需要将它们包装成 class.

class Node
  attr_accessor :value
  attr_accessor :next
end

这将使用 valuenext getter/setter 方法创建 class Node

在C术语中,我们将使用value是Integer,而next是"pointer to Node"。请注意,我们不需要事先指定类型,因为 Ruby 是动态语言。此外,不需要显式 "take a pointer to" 操作,因为正如我上面所说,Ruby 将自动通过引用传递对象。

node1 = Node.new
node1.value = -1

node2 = Node.new
node2.value = 8
node2.next = node1

这将创建 node2 -> node1 链表。

现在参考node2就可以遍历所有链表了:

node = node2
while(node) do
  puts node.value
  node = node.next
end
# Prints:
# 8
# -1

您的问题既不广泛也不复杂。这是基本的。玩得开心 Ruby!