所以,我正在进行一项赋值,其中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
我不是想直接要求答案,我只是无法弄清楚要去哪里。提前感谢您的帮助!
答案 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