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 λΌμ΄μΌμ€λ₯Ό λ°λ¦
λλ€.