본문 바로가기
  • Let's study
알고리즘/C++

[알고리즘] C++ 스택, 큐, 덱

by 코딩고수이고파 2021. 9. 8.

스택


- 한 쪽 끝에서만 원소를 넣고 빼는 구조

- 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

댓글