Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class LinkedListNode
- attr_accessor :value, :next_node
- def initialize(value, next_node = nil)
- @value = value
- @next_node = next_node
- end
- end
- class Stack
- attr_reader :data
- def initialize
- @data = nil
- end
- # Push a value onto the stack
- def push(value)
- @data = LinkedListNode.new(value, @data)
- end
- def pop
- raise 'Stack is empty?' if empty?
- @data = @data.next_node
- end
- def value
- @data.value unless empty?
- end
- def next_node
- @data.next_node unless empty?
- end
- def empty?
- @data.nil?
- end
- end
- def reverse_list(list)
- reverse_stack = Stack.new
- while list
- reverse_stack.push(list.value)
- list = list.next_node
- end
- reverse_stack
- end
- def print_values(list_node)
- if list_node
- print "#{list_node.value} --> "
- print_values(list_node.next_node)
- else
- print "nil\n"
- end
- end
- stack = Stack.new
- stack.push(34)
- stack.push(99)
- stack.push(64)
- stack.push(76)
- revlist = reverse_list(stack)
- print_values(stack)
- print_values(revlist)
Add Comment
Please, Sign In to add comment