구현 - 배열기반 원형 큐
2018. 3. 3. 19:42
#pragma once
#include <iostream>
using namespace std;
template <class T, size_t SIZE>
class CircularQueue
{
public:
CircularQueue()
{
front = rear = 0;
}
void push_back(T d)
{
if (isFull()) throw;
data[rear] = d;
rear = (rear + 1) % SIZE;
}
void pop_front()
{
if (isEmpty()) throw;
front = (front + 1) % SIZE;
}
size_t size()
{
return front < rear ? rear - front : (rear + SIZE) - front;
}
void display()
{
cout << "data in the Queue : \n";
for (size_t i = 0, len = size(); i < len; ++i)
{
cout << data[(front + i) % SIZE] << endl;
}
}
bool isEmpty()
{
return front == rear;
}
bool isFull()
{
return front % SIZE == (rear + 1) % SIZE;
}
private:
int front;
int rear;
T data[SIZE];
};
'프로그래밍' 카테고리의 다른 글
구현 - 더블 링크드 리스트 (0) | 2018.03.06 |
---|---|
구현 - 배열기반 덱 (0) | 2018.03.04 |
구현 - 스택 응용 문제 - 중위계산 (0) | 2018.03.03 |
구현 - 스택 응용 문제 - 후위계산 (0) | 2018.03.03 |
구현 - 배열기반 스택 (0) | 2018.03.03 |