#include <iostream>
#include <list>
using namespace std;
#define MaxSize 100001;
class queue
{
private:
int front;
int rear;
int maxSize;
int* arr;
public:
queue(int input_size);
~queue();
void push(int input);
int pop();
int size();
int empty();
int front_print();
int back_print();
};
queue::queue(int input_size)
{
maxSize = input_size + 1;
front = rear = 0;
arr = new int[input_size];
}
queue::~queue()
{
delete[] arr;
}
void queue::push(int input)
{
rear = (rear + 1) % maxSize;
arr[rear] = input;
}
int queue::pop()
{
if (empty()) return -1;
else
{
return arr[++front % maxSize];
}
}
int queue::size()
{
return rear - front;
}
int queue::empty()
{
if (front == rear) return 1;
else return 0;
}
int queue::front_print()
{
if (empty()) return -1;
else return arr[front+1];
}
int queue::back_print()
{
if (empty()) return -1;
else return arr[rear];
}
int main() {
int N;
cin >> N;
queue * Q = new queue(N);
for (int i = 0; i < N; i++)
{
string input;
cin >> input;
if (input == "push")
{
int num;
cin >> num;
Q->push(num);
}
if (input == "pop") cout << Q->pop() << '\n';
if (input == "size") cout << Q->size() << '\n';
if (input == "empty") cout << Q->empty() << '\n';
if (input == "front") cout << Q->front_print() << '\n';
if (input == "back") cout << Q->back_print() << '\n';
}
delete Q;
return 0;
}
'프로그래밍 공부 > 백준 (C++)' 카테고리의 다른 글
[C++/백준 10866번] 덱 (0) | 2024.10.12 |
---|---|
[C++/백준 1158번] 요세푸스 문제 (0) | 2024.10.12 |
[C++/백준 1874번] 에디터 (0) | 2024.10.12 |
[C++/백준 1874번] 스택 수열 (0) | 2024.10.11 |
[C++/백준 9093번] 괄호 (0) | 2024.10.11 |