0
我需要创建一个链表,在其中输入如下所示:如何在Ruby中创建链表?
9
5
2.3
8
-1
和输出应该是用逗号分隔的同一行列表的元素。
基本上我知道我必须创建2个类,一个名为“Linked List”的类,它代表整个列表和一个名为“Node”的类,它代表列表中的每个元素,但我完全失去了,而我甚至不知道如何“保存”不同节点中的每个元素,我从来没有处理过动态数据结构。任何帮助将不胜感激
我需要创建一个链表,在其中输入如下所示:如何在Ruby中创建链表?
9
5
2.3
8
-1
和输出应该是用逗号分隔的同一行列表的元素。
基本上我知道我必须创建2个类,一个名为“Linked List”的类,它代表整个列表和一个名为“Node”的类,它代表列表中的每个元素,但我完全失去了,而我甚至不知道如何“保存”不同节点中的每个元素,我从来没有处理过动态数据结构。任何帮助将不胜感激
Ruby通过引用存储Objects
(类的实例),并通过值的文字值(整数,符号等)。所以如果你想链接整数列表,你只需要将它们包装到类中。
class Node
attr_accessor :value
attr_accessor :next
end
,将创建Node
类value
和next
getter/setter方法。
在C语言中,我们将使用value
是Integer,并且next
是“指向节点”。请注意,我们不需要事先指定类型,因为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玩得开心!
是你的问题如何在Ruby中创建链表或如何打印它?你应该选择一个。 –
问如何在Ruby中实现链表是一个非常大的问题,可能对于SO来说太大了。而且,关于这个问题已经写了大量的文章。你应该研究这个问题。你可能希望从这里开始(https://en.wikipedia.org/wiki/Linked_list),然后谷歌“Ruby链接列表”。 –
在Ruby中实现链表没什么意义 - 与C数组不同,Ruby Array类可以容纳任意数量的元素,并且实现所有可以从列表中获得的接口,例如向前后添加元素或遍历它(# push,#unshift,#each) - 数组可以在任何基于列表的算法中使用。 – Borsunho