/*
원형 큐
*/
#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 |