Data Structure - (4) 스택

Stack (스택의 구조)

가장 나중에 넣은 데이터를 가장 먼저 꺼낼 수 있는 구조
stack은 배열, 연결리스트를 이용하여 구현

Last In First Out(LIFO)

  • push() : 데이터를 스택에 넣기
  • pop() : 데이터를 스택에서 꺼내기

Stack 의 장단점

stack 구현을 배열으로 했다고 가정하는 경우

  1. stack 의 장점
    • 구조가 단순, 구현이 쉽다.
    • 데이터 저장/읽기 속도가 빠르다
  2. stack의 단점
    • 데이터 최대 갯수를 미리 정해야한다.
    • 저장공간의 낭비가 발생할 수 있음 (최대 개수가 정해져있는데 그 공간을 모두 활용하지 않는 경우)

Stack 과 Queue의 공통점

데이터를 제한적으로 접근할 수 잇는 구조
한쪽 끝에서만 데이터를 넣거나 뺄 수 있는 구조

stack - C++ Container library

c++ stack.

#include <iostream>
#include <stack>

using namespace std;

int main()
{
	stack <int> s;
	s.push(1);
	s.push(2);
	s.push(3);
	
	s.pop();
	s.push(4);
	s.pop();
	while(!s.empty())
	{
		cout << s.top() << " ";
		s.pop();
	}
	
	//2 1
	return 0;
}

stack의 활용

프로세스에서 함수 동작 방식 (함수 호출에 관여)
스택 구조는 프로세스 실행 구조의 기본