我是鲁比的新手.请原谅我问了这么简单的问题.
虽然我知道Ruby doesn’t include a LinkedList class so we need to create our own,因此我创建了我自己的类,如下所示:
class Node
attr_accessor :data, :next
def initialize(data, next_node = nil)
@data = data
@next = next_node
end
end
class Linkedlist
def empty?
@head == nil
end
def size
count = 0
if self.empty?
return count
else
current_node = @head
while current_node.next !=nil
count += 1
current_node = current_node.next
end
return count
end
end
...
...
def add
if self.empty?
@head = Node.new(data)
else
while current_node.next != nil
current_node = current_node.next
end
current_node.next = Node.new(data)
end
end
end
我对size
呼叫的实现清楚地显示了O(n)
的时间复杂性.当查看这answer中的Java
实现时,Java
似乎跟踪linked list
的大小,因此大小调用的时间复杂度是O(1)
.
我如何使用ruby
来实现这一点?