スタックを使用して逆リンクリストを実装しています。 クラスStack
には、リンクリストをスタックに変換するメソッドpush
とpop
があり、そこから最後の要素を抽出して順序を逆転させることができます。スタックを使用してルビのリンクリストを逆転する
私は同様の状況hereに遭遇しました。そのベースケースにメソッドを追加しようとしています。私はreverse_list
メソッドを実装しようとしていますクラスのpush
とpop
を使用して、ポインタを変更し、リンクされたリストを逆転させる方法。
これは私が試したものです:
class LinkedListNode
attr_accessor :value, :next_node
def initialize(value, next_node=nil)
@value = value
@next_node = next_node
end
end
def print_values(list_node)
if list_node
print "#{list_node.value} --> "
print_values(list_node.next_node)
else
print "nil\n"
return
end
end
class Stack
attr_reader :data
def initialize
@data = nil
end
def push(value)
@data = LinkedListNode.new(value, @data)
end
def pop
return nil if @data.nil?
returning_value = @data.value
@data = @data.next_element
returning_value
end
end
def reverse_list(list)
stack = Stack.new.push(list.value)
list = list.next_node
while list
stack.push(list.value)
list = list.next_node
end
stack.pop
end
node1 = LinkedListNode.new(37)
node2 = LinkedListNode.new(99, node1)
node3 = LinkedListNode.new(12, node2)
revlist = reverse_list(node3)
print_values(revlist)
# should return 37 --> 99 --> 12 --> nil
reverse_list
方法(undefined method push for <Context::LinkedListNode:0x00000001c5e0a8>
)でStack
クラスを呼び出すときに、私はエラーを取得します。
私はなぜStack
,push
、pop
の中でreverse_list
を使用することができないのですか?私がreverse_list
をどのように実装することができるかについてのヒントは、よく受け取ります。
私はここのPythonを書いていると思います。それはRubyの質問です。 – tadman
私は擬似コードを書きました。 – letmutx
しないでください。質問がRubyを求めている場合は、Rubyを実行します。あなたがRubyを知らないなら、それは問題ありませんが、これは助けにはなりません。 – tadman