[ create a new paste ] login | about

Link: http://codepad.org/WnEJxIT8    [ raw code | output | fork ]

kabhwan - Ruby, pasted on Apr 8:
# 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


Output:
1
2
3
4
5
6
7
8
9
10
11
12
A
B
C
D
E
nil
A
B
C
D
E
nil


Create a new paste based on this one


Comments: