- 스택은 한쪽 입구만 열린 프링글스 통과 같으며, 가장 나중에 들어간 요소가 가장 먼저 나오는 LIFO(Last In, First Out) 방식을 따릅니다. 🥫
- 스택의 핵심 연산은 요소를 추가하는
Push, 최상단 요소를 제거하는 Pop, 최상단 요소를 확인하는 Peek이며, 이들은 모두 O(1)의 시간 복잡도를 가집니다. ⏱️
- 웹 브라우저의 뒤로 가기 기능, 문서 편집기의 실행 취소(Undo) 기능, 그리고 프로그래밍 언어의 함수 호출 스택(Call Stack) 등 다양한 실생활 및 컴퓨터 시스템에서 스택이 활용됩니다. 🌐
- 스택은 고정된 크기의 배열을 사용하거나, 크기 제한이 없는 연결 리스트를 사용하여 구현할 수 있습니다. 🏗️
- 배열 기반 스택은 구현이 간단하고 메모리 접근이 빠르지만, 크기가 고정되어 있어 공간 낭비나 오버플로우의 위험이 있습니다. 📏
- 연결 리스트 기반 스택은 동적으로 크기를 조절할 수 있어 유연하지만, 각 요소마다 다음 노드를 가리키는 포인터로 인해 추가 메모리 오버헤드가 발생합니다. 🔗
- 함수 호출 스택(Call Stack)은 프로그램 실행 중 함수 호출 순서를 관리하며, 가장 최근에 호출된 함수가 스택의 최상단에 위치하고 먼저 실행을 완료합니다. 💻
- 스택과 큐는 데이터의 순차적 처리와 순서 제어를 위한 기본 자료 구조로, 다양한 알고리즘의 핵심 빌딩 블록입니다. 🧱
데브허브 | DEVHUB | 자료구조 - 스택