# C/C++ 로 배우는 자료구조론 연습문제 7.25
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 queue_to_stack(queue)
temp_stack = Stack.new 5
until queue.is_empty
temp_stack.push queue.dequeue
end
stack = Stack.new 5
until temp_stack.is_empty
stack.push temp_stack.pop
end
return stack
end
queue = CircularQueue.new 6
queue.enqueue "A"
queue.enqueue "B"
queue.enqueue "C"
queue.enqueue "D"
queue.enqueue "E"
stack = queue_to_stack queue
until stack.is_empty
puts stack.pop
end
puts queue.is_empty