Queue
Queue
@TODO
한쪽 끝에서 원소를 넣고, 반대쪽 끝에서 원소를 뺄 수 있는 구조
FIFO First in First out
Restricted Structure
특정 위치에서만 원소를 넣거나 뺄 수 있는 제한된 자료구조 (스택, 큐, 덱)
대기 행렬
- 성질
- 원소 추가 O(1)
- 원소 제거 O(1)
- 제일 앞/뒤 원소 확인 O(1)
- 제일 앞/뒤가 아닌 나머지 원소들의 확인/변경이 ‘원칙적으로’ 불가능
추가되는 쪽을 rear 뒤쪽
제거되는 쪽을 front 앞쪽
마찬가지로 연결리스트보다 배열 구현이 더 쉬움
원형 큐
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
const int MAX = 1000005;
int dat[MAX];
int head = 0, tail = 0;
void push(int x)
{
dat[tail++] = x;
}
void pop()
{
head++;
}
int front()
{
return dat[head];
}
int back()
{
return dat[tail-1];
}
int size()
{
return tail - head;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <bits/stdc++.h>
using namespace std;
int main(void)
{
queue<int> Q;
Q.push(10); // 10
Q.push(20); // 10 20
Q.push(30); // 10 20 30
cout << Q.size() << '\n'; // 3
if(Q.empty()) cout << "Q is empty\n";
else cout << "Q is not empty\n"; // Q is not empty
Q.pop(); // 20 30
cout << Q.front() << '\n'; // 20
cout << Q.back() << '\n'; // 30
Q.push(40); // 20 30 40
Q.pop(); // 30 40
cout << Q.front() << '\n'; // 30
}
BFS
Flood Fill
둘 다 단골 문제
_
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.