# C/C++ 로 배우는 자료구조론 연습문제 6.29
class DualStack
def initialize(size)
@top_left = -1
@top_right = size
@memory = []
@array_size = size
end
def is_full
return @top_right == @top_left + 1
end
def is_empty_left
return @top_left == -1
end
def is_empty_right
return @top_right == @array_size
end
def push_left(data)
return nil if is_full
@top_left += 1
@memory[@top_left] = data
end
def push_right(data)
return nil if is_full
@top_right -= 1
@memory[@top_right] = data
end
def pop_left
return nil if is_empty_left
data = @memory[@top_left]
@top_left -= 1
return data
end
def pop_right
return nil if is_empty_right
data = @memory[@top_right]
@top_right += 1
return data
end
end
stack = DualStack.new(5)
puts stack.push_left(10)
puts stack.push_left(9)
puts stack.push_left(8)
puts stack.push_left(7)
puts stack.push_left(6)
puts stack.push_left(5)
puts stack.push_right(5)
puts stack.is_empty_right
puts stack.pop_left
puts stack.push_right(5)
puts stack.is_full