在不使用数组方法的情况下反转链接列表

时间:2015-04-08 19:50:00

标签: ruby-on-rails ruby

所以,我正在进行一项赋值,其中LinkedListNode类生成一个链表并将值打印给用户。我应该做的是创建一个Stack类来“推”,“弹出”,并反转链表。问题是,我们无法使用.push,.pop或其他任何内容的数组方法。

我一直在思考并试图查找一天内该做什么,并且不知道从哪里开始。有人可以指出我正确的方向,只是让推动方法开始,所以我可以获得一些牵引力,也许可以赶上?

给出的LinkedListNode类:

class LinkedListNode
  attr_accessor :value, :next_node

  def initialize(value, next_node=nil)
      @value = value
      @next_node = next_node
  end
end

给出Stack类的骨架:

class Stack
  attr_reader :data

  def initialize
      @data = nil
  end

  # Push an item onto the stack
  def push(element)
  # IMPLEMENT ME!
  end

  # Pop an item off the stack.  
  # Remove the last item that was pushed onto the
  # stack and return it to the user
  def pop
      # IMPLEMENT ME
  end
end

我不是想直接要求答案,我只是无法弄清楚要去哪里。提前感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

您可以使用Linked List数据类型而不是数组来实现Stack。我相信这样的事情会奏效:

def push(element)
  if data.nil?
    data = LinkedListNode.new(element, nil)
  else
    data = LinkedListNode.new(element, data)
  end
end

def pop
  # grab the top piece of data
  popped = data.value
  # shift the data
  data = data.next_node
end