일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 분할 정복
- 이진 탐색
- NQueen
- 트리
- 자기개발
- git hub
- type 함수
- sys.stdin.readline()
- 동적 계획
- 알고리즘
- 그래프
- Git
- 순차 탐색
- 정렬
- 백준
- 파이썬
- 배열
- 문법
- 그리디
- IT
- format 메서드
- 유닉스
- 우분투
- MiniHeap
- UNIX
- 기초
- 탐색
- 재귀 함수
- 스택
- 자료구조
Archives
- Today
- Total
코딩고치
[백준][자료구조]큐 본문
이 문제는 큐를 구현해 보는 문제이다. 큐의 경우에는 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;
}
'백준 알고리즘 기초 > 자료구조' 카테고리의 다른 글
[백준][자료구조]덱 (0) | 2019.09.05 |
---|---|
[백준][자료구조]조세퍼스 문제 (0) | 2019.09.05 |
[백준][자료구조]에디터 (0) | 2019.09.05 |
[백준][자료구조]스택 수열 (0) | 2019.09.04 |
[백준][자료구조]괄호 (0) | 2019.09.04 |
Comments