我使用方法appendToTail
和print_list
创建了一个单链接列表节点。
我初始化并将五个节点链接在一起,然后调用print_list
n = Node.new(1)
n.appendToTail(Node.new(2))
n.appendToTail(Node.new(3))
n.appendToTail(Node.new(4))
n.appendToTail(Node.new(5))
n.print_list
这是输出
n = Node.new(1) # => 1
n.appendToTail(Node.new(2)) # => #<Node:0x007fa64695bbd8 @next=nil, @data=2>
n.appendToTail(Node.new(3)) # => #<Node:0x007fa64695bb60 @next=nil, @data=3>
n.appendToTail(Node.new(4)) # => #<Node:0x007fa64695bac0 @next=nil, @data=4>
n.appendToTail(Node.new(5)) # => #<Node:0x007fa64695ba70 @next=nil, @data=5>
n.print_list
我不明白为什么输出看起来不像这个
n = Node.new(1) # => 1
n.appendToTail(Node.new(2)) # => 2
n.appendToTail(Node.new(3)) # => 3
n.appendToTail(Node.new(4)) # => 4
n.appendToTail(Node.new(5)) # => 5
n.print_list
谁能告诉我为什么好吗?这是我的Node
课程
# Singly linked list node
class Node
attr_accessor :next, :data
def initialize(data=nil)
@next = nil
@data = data
end
def appendToTail(data)
last = Node.new(data)
n = self
until n.next == nil
n = n.next
end
n.next = last
end
# Prints data for each node from this node and each subsequent node
def print_list
n = self
until n == nil
p n.data
n = n.next
end
end
end
由于
答案 0 :(得分:0)
您在调用appendToTail
时创建了一个全新的节点,但您也在该方法中创建了一个新节点。只需更改appendToTail
,即可在以下位置创建新对象:
def appendToTail(data)
## last = Node.new(data) ## Remove this line
n = self
until n.next == nil
n = n.next
end
n.next = data ## change this line like so
end