[C++] 자료구조 - 스택 (Stack)

지녁·2022년 7월 19일
0

자료구조

목록 보기
1/1

🟧 스택 (Stack)


- 목차

1. Stack이란?

2. Stack 사용법




1. Stack이란?

-> 헤드에서만 데이터의 삽입과 삭제가 이루어지는 리스트

  • 일반적으로 리스트는 리스트의 시작 부분을 헤드(Head), 리스트의 반대편 끝을 테일(Tail)이라고 부르는데, 위 그림에서 보이는 것처럼 스택에서 데이터의 삽입과 삭제는 모두 헤드에서만 이루어진다!

  • 스택은 데이터를 아래에서 위로 쌓는것과 비슷하다.
    그래서 스택의 테일은 하단(Bottom)이라고 부르고, 헤드는 상단(Top)이라고 부른다.

  • 데이터를 삽입하고, 삭제하는 것도 명칭이 있다. 데이터의 삽입은 값을 밀어준다는 느낌으로 push라고 부르며, 데이터의 삭제는 값을 뽑아낸다는 느낌으로 pop이라고 부른다.

  • 이렇듯 스택은 아래에서 위로 차곡차곡 데이터가 쌓이고, 위에서부터 데이터가 삭제된다.
    즉, 먼저 들어간 데이터는 가장 마지막에 나온다는 것이다. 우리는 이러한 스택의 특성을 후입선출/선입후출, 혹은 LIFO(Last-In, First-Out)라고 부른다.




2. Stack 사용법

  • C++에서는 우리가 직접 스택을 구현할 필요가 없다!!
    C++의 STL(Standard Template Library)을 이용하면 스택을 간편하게 사용할 수 있다!!

1) 헤더 파일

  • Stack을 사용하기 위해서는 <stack> 헤더 파일을 include 해야한다.
    Stack의 선언은 stack<type> name 형식으로 선언할 수 있다.
#include <stack>
stack<int> s1;	// int형 스택
stack<char> s2;	// char형 스택

2) 내장 함수

  • Stack 내부에서는 push(), pop() 등의 다양한 함수를 제공한다.
#include <stack>
stack<int> s;

s.push(1);	// 스택에 1 추가
s.push(3); 	// 스택에 3 추가
s.push(7);	// 스택에 7 추가

s.pop();	// 스택 최상단 데이터 삭제 (7 삭제)
s.pop();	// (3 삭제)

s.top();	// 스택 최상단의 데이터 반환 (최상단 데이터 : 1)

s.size(); 	// 스택의 크기 반환 (크기 : 1)

s.empty(); 	// 스택이 비어있는지 bool 타입으로 반환 (false)


stack<int> s2;
s.swap(s2);	// 스택 s의 내용과 스택 s2의 내용 swap
// swap(s, s2); 이 방법도 가능
profile
할수이따

0개의 댓글