스택
- 한 쪽 끝에서만 원소를 넣고 빼는 구조
- LIFO(Last In First Out): 나중에 들어온 것이 먼저 나감
- 헤더: #include<stack>
- 선언: stack<데이터타입>이름
기본 함수
- push(a): stack에 a 추가
- pop(): 제일 마지막에 추가된 원소 제거
- top(): 제일 마지막에 추가된 원소 반환
- empty(): stack이 비어있으면 true, 아니면 false 반환
- size(): stack에 들어있는 원소의 개수 반환
#include<iostream>
#include<stack>
using namespace std;
stack<int>s;
int main(){
s.push(1); //s={1}
s.push(2); //s={1,2}
s.push(3); //s={1,2,3}
s.pop(); //s={1,2}
cout<<s.top()<<'\n'; //2
cout<<s.empty()<<'\n'; //0
cout<<s.size()<<'\n'; //2
return 0;
}
큐
- 한 쪽으로는 원소를 넣고 다른 쪽으로 빼는 구조
- FIFO(First In First Out): 먼저 들어온 것이 먼저 나감
- 헤더: #include<queue>
- 선언: queue<데이터타입>이름
기본 함수
- push(a): queue에 a 추가
- pop(): 제일 먼저 추가된 원소 제거
- front(): 제일 먼저 추가된 원소 반환
- back(): 제일 나중에 추가된 원소 반환
- empty(): queue가 비어있으면 true, 아니면 false 반환
- size(): queue에 들어있는 원소의 개수 반환
#include<iostream>
#include<queue>
using namespace std;
queue<int>q;
int main(){
q.push(1); //q={1}
q.push(2); //q={1,2}
q.push(3); //q={1,2,3}
q.front(); //1
q.back(); //3
q.pop(); //q={2,3}
cout<<q.empty()<<'\n'; //0
cout<<q.size()<<'\n'; //2
return 0;
}
덱
- 양쪽에서 모두 원소를 넣고 뺄 수 있는 구조
- 헤더: #include<deque>
- 선언: deque<데이터타입>이름
기본 함수
- push_front(a): deque 앞에 a 추가
- push_back(a): deque 뒤에 a 추가
- pop_front(): deque 앞의 원소 제거
- pop_back(): deque 뒤의 원소 제거
- front(): 제일 앞의 원소 반환
- back(): 제일 뒤의 원소 반환
- empty(): deque가 비어있으면 true, 아니면 false 반환
- size(): deque에 들어있는 원소의 개수 반환
#include<iostream>
#include<deque>
using namespace std;
deque<int>dq;
int main(){
dq.push_front(1); //dq={1}
dq.push_front(2); //dq={2,1}
dq.push_back(3) //dq={2,1,3}
dq.front(); //1
dq.back(); //3
dq.pop_front() //dq={1,3}
dq.pop_back() //dq={1}
cout<<dq.empty()<<'\n'; //0
cout<<dq.size()<<'\n'; //1
return 0;
}
'알고리즘 > C++' 카테고리의 다른 글
[알고리즘] 선택 정렬 - C++ (0) | 2021.09.22 |
---|---|
[알고리즘] 버블 정렬 - C++ (0) | 2021.09.22 |
[알고리즘] Algorithm 헤더 - C++ (0) | 2021.09.19 |
[알고리즘] C++ Vector 사용법 (0) | 2021.09.09 |
[알고리즘] C++ 기본 (0) | 2021.09.09 |
댓글