euisblue
622. Design Circular Queue

Ruby

1class MyCircularQueue 2 def initialize(k) 3 @queue = Array.new(k, 0) 4 @capacity = k 5 @head = -1 6 @tail = -1 7 end 8 9 def en_queue(value) 10 return false if is_full 11 @head = 0 if is_empty 12 @tail = (@tail+1) % @capacity 13 @queue[@tail] = value 14 15 return true 16 end 17 18 def de_queue() 19 return false if is_empty 20 if @head == @tail 21 @head = -1 22 @tail = -1 23 return true 24 end 25 @head = (@head + 1) % @capacity 26 return true 27 end 28 29 def front() 30 return -1 if is_empty 31 @queue[@head] 32 end 33 34 def rear() 35 return -1 if is_empty 36 @queue[@tail] 37 end 38 39 def is_empty() 40 @head == -1 41 end 42 43 def is_full() 44 ((@tail + 1) % @capacity) == @head 45 end 46end 47