프로그래밍 공부/백준 (C++)

[C++/백준 10845번] 큐

Rocketbabydolls 2024. 10. 12. 16:18

 

#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;
}