이번 포스팅에선 컴퓨터 프로그램의 가장 기초가 되는 자료구조인 스택(stack)과 큐(queue)에 대해 알아보도록 하겠다.
스택(stack) 이것만 기억하자 ~> 택배의 상하차 - 선입 후출
스택(stack)을 단순히 표현하자면 택배의 상하차와 같다고 볼 수 있는데 그 이유는 스택의 선입 후출이란 특징 때문이다.
#include<iostream>
#include<stack>
using namespace std;
int main()
{
stack<int> Stack_List;
// 선입
Stack_List.push(3);
Stack_List.push(1);
Stack_List.push(4);
// 후출
Stack_List.pop();
Stack_List.push(1);
Stack_List.push(5);
// 후출
Stack_List.pop();
Stack_List.push(9);
Stack_List.push(2);
while (!Stack_List.empty())
{
cout << Stack_List.top() << " ";
Stack_List.pop();
}
}
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int> VectorStack;
// 선입
VectorStack.push_back(3);
VectorStack.push_back(1);
VectorStack.push_back(4);
// 후출
VectorStack.pop_back();
VectorStack.push_back(1);
VectorStack.push_back(5);
// 후출
VectorStack.pop_back();
VectorStack.push_back(9);
VectorStack.push_back(2);
// 후출
VectorStack.pop_back();
for(int i = VectorStack.size(); i >= 0; i--)
cout << VectorStack[i] << " ";
}
2 9 1 1 3
큐(queue) 이것만 기억하자 ~> 은행 창구 - 선입 선출
스택과 다르게 큐(queue)는 선입 후출의 형태가 아닌 은행 창구과 같이 선입 선출의 구조를 띄고 있다.
#include<iostream>
#include<queue>
using namespace std;
int main()
{
queue<int> Queue_List;
// 선입
Queue_List.push(3);
Queue_List.push(1);
Queue_List.push(4);
// 선출
Queue_List.pop();
Queue_List.push(1);
Queue_List.push(5);
// 선출
Queue_List.pop();
Queue_List.push(9);
Queue_List.push(2);
while (!Queue_List.empty())
{
cout << Queue_List.front() << " ";
Queue_List.pop();
}
return 0;
}
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int> VectorQueue;
// 선입
VectorQueue.push_back(3);
VectorQueue.push_back(1);
VectorQueue.push_back(4);
// 선출
VectorQueue.erase(VectorQueue.begin());
VectorQueue.push_back(1);
VectorQueue.push_back(5);
// 선출
VectorQueue.erase(VectorQueue.begin());
VectorQueue.push_back(9);
VectorQueue.push_back(2);
for(auto el : VectorQueue)
cout << el << " ";
cout << endl;
}
4 1 5 9 2