如何在Ruby中创建链表?

时间:2015-09-07 21:47:54

标签: ruby linked-list nodes

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

9
5
2.3
8
-1

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

基本上我知道我必须创建2个类,一个名为“Linked List”的类代表整个列表,一个名为“Node”的类代表列表中的每个元素,但我完全迷失了,我不知道甚至不知道如何“保存”不同节点中的每个元素,我以前从未使用过动态数据结构。任何帮助将不胜感激

1 个答案:

答案 0 :(得分:2)

Ruby通过引用存储Objects(类的实例),并按值存储文字值(整数,符号等)。因此,如果您想要整数的链接列表,则需要将它们包装到类中。

class Node
  attr_accessor :value
  attr_accessor :next
end

这将使用Nodevalue getter / setter方法创建类next

在C语言中,我们将使用value为Integer,而next是"指向Node"的指针。请注意,我们不需要事先指定类型,因为Ruby是动态语言。此外,不需要明确的"指针指向"操作,因为,正如我上面所说,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吧!