[자료구조] 스택(Stack) - 코딩밥상
스택의 개념
스택에서 데이터 입/출력은 오로지 스택의 꼭대기에서만 이루어집니다. 따라서 스택 가운데에 있는 데이터를 삭제하거나 새로운 데이터를 입력하는 일은 메우 번거로운 과정을 거쳐야합니다. 예를들어 하노이의 탑과정을 거쳐야 하는것이죠.
정리하면, 스택에서는 가장 마지막에 들어간 데이터가 제일 먼저 나오고(Last In First Out) 가장 먼저 들어간 데이터는 가장 나중에 나옵니다.(First In Last Out)
언듯보면 비효율적이게 보일수 있지만, 활용도는 무궁무진합니다. 변수를 선언한 후에 수명주기가 끝나면 변수를 자동으로 제거하는 자동메모리 또한 스택으로 구현되어 있습니다. 우리가 "지역 변수는 스택(자동 메모리)에 할당된다"라고 하는 이유입니다.
그 외에도 거의 대부분의 네트워크 프로토콜도 스택 기반, 컴파일러 구문 분석기, 이미지 편집 프로그램의 되돌리기(흔히 control + z)기능 등이 모두 스택을 이용하고 있습니다.
스택의 핵심 기능 '삽입과 제거'
스택 ADT의 주요 기능은 '삽입(Push)'과 '제거(Pop)'연산 두 가지입니다. 그 외의 기능들은 두 연산을 위한 보조 연산이라고 볼 수도 있습니다.
다음 포스팅에서 배열과 링크드 리스트를 이용하여 각각 직접 구현해 보겠습니다.
2022.12.24 - [자료구조/스택(Stack)] - [자료구조] 배열을 기반으로 스택(Stack) 구현하기
[자료구조] 배열을 기반으로 스택(Stack) 구현하기
배열을 기반으로 스택 구현하기 배열을 이용한 스택은 용량을 동적으로 변경하는 비용이 크다는 단점이 있지만, 구현이 간단하다는 장점도 있습니다. 배열 기반의 스택은 각 노드를 동적으로
sheepseung.tistory.com