#pragma once
//배열을 이용한 원형 큐 클래스
#ifndef ___CircularQueue
#define ___CircularQueue
#include <cstdio>
#include <cstdlib>
#define MAX_QUEUE_SIZE 100
//오류 처리 함수
inline void error(const char *message) {
printf("%s\n", message);
exit(1);
}
class CircularQueue {
protected:
int front; //첫 번째 요소 앞의 위치
int rear; //마지막 요소 위치
int data[MAX_QUEUE_SIZE]; //요소의 배열
public:
CircularQueue() { front = rear = 0; }
bool isEmpty() { return front == rear; }
bool isFull() { return (rear + 1) % MAX_QUEUE_SIZE == front; }
void enqueue(int val) { //큐의 삽입
if (isFull())
error("error : 큐가 포화 상태입니다\n");
else {
rear = (rear + 1) % MAX_QUEUE_SIZE;
data[rear] = val;
}
}
int dequeue() { //첫 항목을 큐에서 빼서 반환
if (isEmpty())
error(" Error : 큐가 공백상태입니다\n");
else {
front = (front + 1) % MAX_QUEUE_SIZE;
return data[front];
}
}
int peek() { //첫 항목을 큐에서 빼지 않고 반환
if (isEmpty())
error("Error : 큐가 공백상태입니다\n");
else
return data[(front + 1) % MAX_QUEUE_SIZE];
}
void display() { //큐의 모든 내용을 순서대로 출력
printf("큐 내용 : ");
int maxi = (front < rear) ? rear : rear + MAX_QUEUE_SIZE;
for (int i = front + 1; i <= maxi; i++)
printf("[2%d] ", data[i % MAX_QUEUE_SIZE]);
printf("\n");
}
};
#endif // !___CircularQueue
'Programming > DS SorceCode' 카테고리의 다른 글
CircularDeque.h : CircularQueue 클래스를 상속해서 구현한 원형 덱 클래스 (0) | 2019.03.22 |
---|---|
ArrayStack.h : 배열을 이용한 int 스택 클래스 (0) | 2019.03.22 |
Location2D.h : 위치 정보를 나타내는 구조체 (0) | 2019.03.22 |
OperandStack.h : 피연산자 스택 클래스 (0) | 2019.03.22 |
StudentStack.h : 학생정보 스택 클래스 (0) | 2019.03.22 |