[ create a new paste ] login | about

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

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


Output:
1
2
3
4
5
6
A
B
C
D
E
true


Create a new paste based on this one


Comments: