https://www.youtube.com/watch?v=D_fwSy5tRAY
[실전 알고리즘] 0x06강 - 큐
안녕하세요, 바킹독입니다. 이번 시간에는 큐를 배워보겠습니다. 저번 단원에서 배운 스택이랑 이번에 배울 큐랑은 좀 비슷한게 많습니다. 그래서 전 단원을 잘 이해하고 왔다면 이번 단원도 수
blog.encrypted.gg
1. 정의와 성질
2. 기능과 구현
3. STL queue
4. 연습 문제
1. 정의
큐 : 한쪽 끝에서 원소를 넣고 반대쪽 끝에서 원소를 뺄 수 있는 자료구조
스택과 달리, 먼저 들어간 원소가 먼저 나오게 됨
FIFO(First in First Out)
2. 성질
1) 원소 추가 : O(1) <- 뒤쪽, rear
2) 원소 제거 : O(1) <- 앞쪽, front
3) 제일 앞/뒤의 원소 확인 : O(1)
4) 제일 앞/뒤가 아닌 나머지 원소들의 확인/변경이 원칙적으로 불가능
3. 구현
1) 큐 - 배열
2) 원형 큐
배열로 구현하면 삭제가 발생할 때 마다 앞쪽에 쓸모없는 공간이 계속 생기는 문제를 해결하는 방법
-> 큐의 원소가 들어갈 배열을 원형으로 만듦 (관념적으로는 배열이 원형인거고, 실제 구현을 할 땐 head나 tail이 7인 상태에서 1이 더해질 때 0번지로 다시 오도록)
3) push 함수
4) pop 함수
5) front/back 함수
front : 큐에서 제일 앞에 위치한 원소를 반환하는 함수
back : 큐에서 제일 뒤에 위치한 원소를 반환하는 함수
4. STL queue
https://cplusplus.com/reference/queue/queue/
https://cplusplus.com/reference/queue/queue/
container_typeThe second template parameter (Container)Type of the underlying container
cplusplus.com
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
}
'강의 > [C++]바킹독의 실전 알고리즘' 카테고리의 다른 글
[바킹독]8. 스택의 활용(수식의 괄호 쌍) (0) | 2024.08.02 |
---|---|
[바킹독]7. 덱 (0) | 2024.08.02 |
[바킹독]5. 스택 (0) | 2024.08.02 |
[바킹독]4. 연결 리스트 (0) | 2024.08.01 |
[바킹독]3. 배열 (0) | 2024.08.01 |