#pragma once
#ifndef ___CircularDeque
#define ___CircularDeque
//CircularDeque.h : CircularQueue 클래스를 상속해서 구현한 원형 덱 클래스
#include "CircularQueue.h"
class CircularDeque : public CircularQueue {
public:
CircularDeque(){}
void addRear(int val) { enqueue(val); } //enqueue() 호출
int deleteFront() { return dequeue(); } //dequeue() 호출
int getFront() { return peek(); } //peek() 호출
void addFront(int val) { //전단에 삽입
if (isFull())
error("error : 덱이 포화상태입니다.\n");
else {
data[front] = val;
front = (front - 1 + MAX_QUEUE_SIZE) % MAX_QUEUE_SIZE;
}
}
int deleteRear() { //후단에서 삭제
if (isEmpty())
error("Error : 덱이 공백상태입니다.");
else {
int ret = data[rear];
rear = (rear - 1 % MAX_QUEUE_SIZE) % MAX_QUEUE_SIZE;
return ret;
}
}
int getRear() { //후단에서 peek()
if (isEmpty())
error("Error : 덱이 공백상태입니다\n");
else return data[rear];
}
void display() { //CircularQueue::display()를 재정의
printf("덱의 내용 : "); //이 출력 코드만 다름
int maxi = (front < rear) ? rear : rear + MAX_QUEUE_SIZE;
for (int i = front + 1; i <= maxi; i++)
printf("[%2d] ", data[i%MAX_QUEUE_SIZE]);
printf("\n");
}
};
#endif // !___CircularDeque
'Programming > DS SorceCode' 카테고리의 다른 글
BankSimulator.h : 은행 시뮬레이션 클래스 (0) | 2019.03.22 |
---|---|
CustomerQueue.h : 하나의 고객 정보를 관리하기 위한 클래스 (0) | 2019.03.22 |
ArrayStack.h : 배열을 이용한 int 스택 클래스 (0) | 2019.03.22 |
CircularQueue.h : 배열을 이용한 원형 큐 클래스 (0) | 2019.03.22 |
Location2D.h : 위치 정보를 나타내는 구조체 (0) | 2019.03.22 |