如何在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
这将使用 value
和 next
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!
我需要创建一个链表,其中的输入如下所示:
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
这将使用 value
和 next
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!