반응형
template <typename T>
class MyQueue
{
public:
MyQueue() :
Dat{},
Head(0),
Tail(0)
{
}
private:
T Dat[10000];
int Head;
int Tail;
public:
void push(int x)
{
Dat[Tail++] = x;
}
void pop()
{
Head++;
}
int front()
{
return Dat[Head];
}
int back()
{
return Dat[Tail - 1];
}
int size()
{
return Tail - Head;
}
bool empty()
{
if (Tail - Head == 0)
{
return true;
}
return false;
}
};
void test()
{
MyQueue<int> Q;
Q.push(10);
Q.push(20);
Q.push(30);
cout << Q.front() << '\n'; // 10
cout << Q.back() << '\n'; // 30
Q.pop();
Q.push(15);
Q.push(25);
cout << Q.front() << '\n'; // 20
cout << Q.back() << '\n'; // 25
cout << Q.size() << '\n'; // 4
cout << Q.empty() << '\n'; // 0
}
코딩테스트 or 단순한 용도에 사용할 예제일 뿐 완벽한 queue가 아닙니다.
해당 queue는 데이터를 지우는 방식이 아닌 Head의 인덱스를 증가시켜주는 방식으로
인덱스범위에 신경써서 사용해야합니다.
반응형
댓글