# C/C++ 로 배우는 자료구조론 연습문제 7.24
class CircularQueue
def initialize(size)
@memory = []
@front = 0
@rear = 0
@queue_size = size
end
def is_empty
return @front == @rear
end
def is_full
return ((@rear + 1) % @queue_size) == @front
end
def enqueue(data)
return nil if is_full
@rear = (@rear + 1) % @queue_size
@memory[@rear] = data
end
def dequeue
return nil if is_empty
@front = (@front + 1) % @queue_size
return @memory[@front]
end
end
class Stack
def initialize(size)
@top = -1
@memory = []
@stack_size = size
end
def is_full
return @top >= (@stack_size - 1)
end
def is_empty
return @top == -1
end
def push(data)
return nil if is_full
@top += 1
@memory[@top] = data
end
def pop
return nil if is_empty
data = @memory[@top]
@top -= 1
return data
end
end
def stack_to_queue(stack)
temp_stack = Stack.new 5
until stack.is_empty
temp_stack.push stack.pop
end
queue = CircularQueue.new 6
until temp_stack.is_empty
queue.enqueue temp_stack.pop
end
return queue
end
stack = Stack.new 5
stack.push "A"
stack.push "B"
stack.push "C"
stack.push "D"
stack.push "E"
queue = stack_to_queue stack
until queue.is_empty
puts queue.dequeue
end
puts stack.is_empty