Ric*_*sas 1 ruby linked-list nodes
我需要创建一个链表,其中的输入如下所示:
9
5
2.3
8
-1
Run Code Online (Sandbox Code Playgroud)
并且输出应该是用逗号分隔的同一行中的列表元素。
基本上我知道我必须创建 2 个类,一个称为“链表”的类代表整个列表,一个称为“节点”的类代表列表的每个元素,但我完全迷失了,我什至没有知道如何“保存”不同节点中的每个元素,我以前从未处理过动态数据结构。任何帮助将不胜感激
RubyObjects按引用存储(类的实例),按值存储文字值(整数、符号等)。所以如果你想要整数的链表,你只需要将它们包装到类中。
class Node
attr_accessor :value
attr_accessor :next
end
Run Code Online (Sandbox Code Playgroud)
这将创建类Node与value和nextgetter / setter方法。
在 C 术语中,我们将使用valueis Integer,并且next是“指向 Node 的指针”。请注意,我们不需要事先指定类型,因为 Ruby 是动态语言。此外,不需要显式的“获取指针”操作,因为正如我上面所说,Ruby 会自动通过引用传递对象。
node1 = Node.new
node1.value = -1
node2 = Node.new
node2.value = 8
node2.next = node1
Run Code Online (Sandbox Code Playgroud)
这将创建node2 -> node1链表。
现在,参考node2你可以遍历所有链表:
node = node2
while(node) do
puts node.value
node = node.next
end
# Prints:
# 8
# -1
Run Code Online (Sandbox Code Playgroud)
您的问题没有任何广泛或复杂的内容。这是基本的。与 Ruby 一起玩得开心!