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 ๋ผ์ด์ผ์ค๋ฅผ ๋ฐ๋ฆ
๋๋ค.