: 먼저 들어온 데이터가 나중에 나가는 형식(선입후출 == FILO)의 자료구조이다.
즉, 출입구가 하나 뿐인 형태이다.
1) 스택 구현 예제
#include <bits/stdc++.h> // 자주 쓸만한 헤더파일을 전부 include 하는 헤더파일
using namespace std;
stack<int> s; // int형 데이터 저장하는 스택 선언
int main()
{
// 삽입(5) - 삽입(2) - 삽입(3) - 삽입(7) - 삭제() - 삽입(1) - 삽입(4) - 삭제()
s.push(5); //.push(data) : data를 스택 맨 뒤에 삽입
s.push(2);
s.push(3);
s.push(7);
s.pop(); //.pop() : 스택 맨 뒤의 원소를 삭제
s.push(1);
s.push(4);
s.pop();
// 스택 최상단 원소부터 출력
while(!s.empty()) //.empty() : 스택이 비었는지 확인(비었으면 true, 아니면 false)
{
cout << s.top() << ' '; //.top() : 스택 맨 뒤의 원소를 반환(삭제 X)
s.pop();
}
}
실행 결과 : 1 3 2 5
: 먼저 들어온 데이터가 먼저 나가는 형식(선입선출 == FIFO)의 자료구조이다.
즉, 양방향으로 입구와 출구가 따로 존재하는 형태이다.
1) 큐 구현 예제
#include <bits/stdc++.h> // 자주 쓸만한 헤더파일을 전부 include 하는 헤더파일
using namespace std;
queue<int> q; // int형 데이터 저장하는 큐 선언
int main()
{
// 삽입(5) - 삽입(2) - 삽입(3) - 삽입(7) - 삭제() - 삽입(1) - 삽입(4) - 삭제()
q.push(5); //.push(data) : data를 큐 맨 뒤에 삽입
q.push(2);
q.push(3);
q.push(7);
q.pop(); //.pop() : 큐 맨 앞의 원소를 삭제
q.push(1);
q.push(4);
q.pop();
// 스택 최상단 원소부터 출력
while(!q.empty()) //.empty() : 큐가 비었는지 확인(비었으면 true, 아니면 false)
{
cout << q.front() << ' '; //.top() : 큐 맨 앞의 원소를 반환(삭제 X)
q.pop();
}
}
실행 결과 : 3 7 1 4
출처 : 유튜브 동빈나(https://youtu.be/7C9RgOcvkvo)