如何从单链表中打印数据

时间:2017-03-13 01:15:49

标签: ruby

我使用方法appendToTailprint_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

由于

1 个答案:

答案 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