[C++] 스택, 큐, 덱

송혜민·2021년 9월 12일
0

알고리즘

목록 보기
1/1

스택

  • 한 쪽 끝에서만 원소를 넣고 빼는 구조
  • LIFO(Last In First Out): 나중에 들어온 것이 먼저 나감
  • 헤더: #include<stack>
  • 선언: stack<데이터타입>이름

기본 함수

  • stack을 선언했을 때
stack <int> s;
  • 함수 사용법

s.push(a): stack에 a 추가
s.pop(): 제일 마지막에 추가된 원소 제거
s.top(): 제일 마지막에 추가된 원소 반환
s.empty(): stack이 비어있으면 true, 아니면 false 반환
s.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를 선언했을 때
queue <int> q;
  • 함수 사용법

q.push(a): stack에 a 추가
q.pop(): 제일 마지막에 추가된 원소 제거
q.top(): 제일 마지막에 추가된 원소 반환
q.empty(): stack이 비어있으면 true, 아니면 false 반환
q.size(): stack에 들어있는 원소의 개수 반환

#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<데이터타입>이름

기본 함수

  • 덱을 선언했을 때
  deque<int>dq;
  • 함수 사용법

dq.push_front(a): deque 앞에 a 추가
dq.push_back(a): deque 뒤에 a 추가
dq.pop_front(): deque 앞의 원소 제거
dq.pop_back(): deque 뒤의 원소 제거
dq.front(): 제일 앞의 원소 반환
dq.back(): 제일 뒤의 원소 반환
dq.empty(): deque가 비어있으면 true, 아니면 false 반환
dq.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;
}
profile
프로그래밍 공부중인 학생

0개의 댓글