코딩고치

[백준][자료구조]큐 본문

백준 알고리즘 기초/자료구조

[백준][자료구조]큐

코딩고치 2019. 9. 5. 02:15

이 문제는 큐를 구현해 보는 문제이다. 큐의 경우에는 push 연산을 하면 문자열의 가장 뒤에 입력한 데이터가 들어가고 pop 연산을 한 경우에는 가장 먼저 입력한 데이터가 출력이 된다(FIFO).  LIFO의 성질을 가진 스택과는 이 부분에서 차이가 있다.

#include <iostream>
#include <string>
using namespace std;

class queue	
{
private:
	int data[100000];
	int begin;
	int end;	
public:
	queue() : begin(0), end(0)
	{
		data[100000] = 0;
	}
	void push(int num)
	{
		data[end] = num;
		end++;
	}
	int pop()
	{
		if (end - begin == 0)
			return -1;
		else
			return data[begin++];
	}
	int size()
	{
		return end - begin;
	}
	int empty()
	{
		if (size() == 0)
			return 1;
		else
			return 0;
	}
	int front()
	{
		if (size() == 0)
			return -1;
		else
			return data[begin];
	}
	int back()
	{
		if (size() == 0)
			return -1;
		else
			return data[end - 1];
	}
};

int main(void)
{
	int n;
	queue q;
	cin >> n;

	while (n--)
	{
		string cmd;
		cin >> cmd;
		int x;
		if (cmd == "push")
		{
			cin >> x;
			q.push(x);
		}
		else if (cmd == "pop")
		{
			cout << q.pop() << '\n';
		}
		else if (cmd == "size")
		{
			cout << q.size() << '\n';
		}
		else if (cmd == "empty")
		{
			cout << q.empty() << '\n';
		}
		else if (cmd == "front")
		{
			cout << q.front() << '\n';
		}
		else if (cmd == "back")
		{
			cout << q.back() << '\n';
		}
	}

	return 0;
}
Comments