도 FIFO 으로 단박에 설명되는 자료구조

가장 간단한 배열로 구현한 것이다.
이 큐는 데이터의 사용에 의해 앞부분 공간이 점차적으로 사용불가 상태가 된다.
(front 와 rear가 계속 전진하기 때문)
이를 해결하는 것으로 환형(원형) 큐가 있는데, 환형 큐의 구현은 vol. 3 으로...

# Normal Queue Implementation
# Jungtaek Lim(Heart), 2009-03-03

class Queue
  def initialize(size)
    @memory = []
    @front = -1
    @rear = -1

    @queue_size = size
  end

  def is_empty
    return @front == @rear
  end
  
  def is_full
    return (@front + 1)  >= @queue_size
  end

  def enqueue(data)
    return nil if is_full

    @front += 1
    @memory[@front] = data
  end

  def dequeue
    return nil if is_empty

    @rear += 1
    return @memory[@rear]
  end
end

queue = Queue.new(3)

puts queue.enqueue("Data1")
puts queue.enqueue("Data2")
puts queue.dequeue
puts queue.enqueue("Data3")
puts queue.enqueue("Data4")
puts queue.dequeue
puts queue.dequeue
puts queue.dequeue


결과>
Data1
Data2
Data1
Data3
nil
Data2
Data3
nil
크리에이티브 커먼즈 라이선스
Creative Commons License

'Dev.Programming > DS/Algorithm' 카테고리의 다른 글

Deck(Deque, Double-ended Queue) - in Ruby  (0) 2009/03/04
Circular Queue - in Ruby  (0) 2009/03/04
Queue - in Ruby  (4) 2009/03/04
Stack - in Ruby  (0) 2009/03/03
간단한 문제...(연속된 숫자 그룹 맺어주기)  (0) 2008/09/23
바람개비 별찍기(for 문 2개 이용)  (0) 2008/06/12
Posted by Heart