백준 알고리즘 기초/자료구조
[백준][자료구조]큐
코딩고치
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;
}