Stack은 LIFO(Last In First Out)의 원칙을 따르는 선형 자료구조이다
출처
이때 stack은 두가지 main operation을 가지고 있는데
1. Push - 데이터를 추가한다.
2. Pop - 가장 최근에 추가한 데이터를 삭제한다.
stack<int> numbers;
numbers.push(1);
numbers.push(2);
numbers.push(3);
while(!numbers.empty()) {
cout<<numbers.top()<<", ";
numbers.pop();
}
// 3, 2, 1,
stack은 추가된 가장 최근의 데이터를 방출하는 데 큰 의미를 가지고 있다.
1. 인터넷 뒤로가기
단순한 Stack은 아니지만 큰 틀은 stack을 활용한다.
방문한 가장 page를 넣으면 뒤로가기를 누를 시 page stack에서 pop이 발생하고 top의 페이지를 반환한다.
2. 함수를 부를 때
함수는 리턴값을 가지고 실행 줄로 돌아와야한다. 그렇기 때문에 메모리에서 최근 Line을 stack에 담고, 함수 연산 후 다시 돌아온다.
3. 재귀 알고리즘
재귀 알고리즘은 stack을 활용하면 손쉽게 구현할 수 있다.
실제로 return 에서 자기 함수를 부르는 것도 OS는 stack을 활용한다. (2번)
Queue는 FIFO(First In First Out)의 원칙을 따르는 선형 자료구조이다
출처
Queue는 두가지 main operation을 가진다.
1. Enqueue - 데이터를 추가한다.
2. Dequeue - 데이터의 추가순서를 보장하며 데이터를 삭제한다.
queue<int> numbers;
numbers.push(1);
numbers.push(2);
numbers.push(3);
while(!numbers.empty()) {
cout<<numbers.front()<<", ";
numbers.pop();
}
// 3, 2, 1,