# C/C++ 로 배우는 자료구조론 연습문제 7.32
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
def copy_queue(queue_src, queue_dest)
until queue_dest.is_empty
queue_dest.dequeue
end
temp_queue = CircularQueue.new 6
until queue_src.is_empty
data = queue_src.dequeue
queue_dest.enqueue data
temp_queue.enqueue data
end
until temp_queue.is_empty
queue_src.enqueue temp_queue.dequeue
end
end
queue = CircularQueue.new 6
queue.enqueue "A"
queue.enqueue "B"
queue.enqueue "C"
queue.enqueue "D"
queue.enqueue "E"
queue2 = CircularQueue.new 6
queue2.enqueue "F"
copy_queue queue, queue2
puts queue2.dequeue
puts queue2.dequeue
puts queue2.dequeue
puts queue2.dequeue
puts queue2.dequeue
puts queue2.dequeue
puts queue.dequeue
puts queue.dequeue
puts queue.dequeue
puts queue.dequeue
puts queue.dequeue
puts queue.dequeue