[C++] 원형 큐(Circular Queue) 소스

Programming/Algorithm 2014. 10. 14. 09:18 Posted by gaeddong2

/*
 원형 큐
*/


#include <iostream>

using namespace std;

 

//배열 size
#define MAX 4

 

//구현하기 나름이지만, queue와 달리 Circular Queue는 rear, front를 모두 0으로 넣고 시작한다.
int rear = 0;
int front = 0;
int Q[MAX];

 

//함수 선언
bool isFull();
bool isEmpty();
void enQueue(int item);
int deQueue();

 

//삽입
void enQueue(int item)
{
 if (isFull())
 {
  cout << "Queue is Full" << endl;
  exit(1);
 }
 else//mod 연산 사용
 {
  rear = (rear + 1) % MAX;
  Q[rear] = item;
 }
}


//삭제
int deQueue()
{
 if (isEmpty())
 {
  cout << "Queue is Empty" << endl;
  exit(1);
 }
 else
 //mod 연산 사용
 {
  front = (front + 1) % MAX;
  return Q[front];
 }
}


//Empty 확인
bool isEmpty()
{
 if (front == rear)
  return true;
 else return false;
}

 

//Full 확인
bool isFull()
{
 //일반 Queue와 다른 Full 조건
 if ((rear + 1)% MAX == front)
  return true;
 else
  return false;
}

 

//메인

int main(void)
{
 for (int i = 1; i < MAX; i++)
 {
  cout << "enQueue: " << i << endl;
  enQueue(i);
 }

 for (int i = 1; i < MAX; i++)
 {
  cout << "Dequeue: " << deQueue() << endl;
 }
 return 0;
}

'Programming > Algorithm' 카테고리의 다른 글

[C++] 너비우선탐색(BFS)  (0) 2014.10.14
[C++] Queue List (큐 리스트)  (0) 2014.10.14
[C++] 큐(Queue)  (0) 2014.10.14
[C++] 계산기 구현  (0) 2014.10.13
[C++] 분할 정복(Quick Sort)  (0) 2014.10.13