스택(Stack)이란?
- 스택(Stack)은 클래스이며, 데이터를 선입후출(FILO - First In Last Out) 또는 후입선출(LIFO - Last In First Out)의 순서로 저장하는 추상 자료형(ADT)입니다.
- 이는 스택에 데이터를 추가할 때 항상 맨 위에 추가되고, 데이터를 제거할 때는 맨 위에서 제거되는 구조를 의미합니다. 예를들어 컨테이너를 수직으로 한 줄로 쌓는 작업이라고 생각하시면 편할 것 같습니다.
- Stack은 System.Collections 네임스페이스에 정의되어 있습니다.
- 스택은 주로 함수 호출의 실행 컨텍스트를 관리하거나, 문제를 해결하는 과정에서 임시 데이터를 저장하거나 역순으로 데이터를 처리할 때 유용하게 사용됩니다.
<출처: https://blog.kakaocdn.net/dn/oLNir/btrjWUaqG6V/LmTfg3hV6iwLrk09KunbO1/img.png>
스택(Stack)을 사용해보자!
1. Stack 생성
//비어있는 스택 생성.
Stack stack1 = new Stack();
//용량이 5인 스택 생성.
Stack stack2 = new Stack(5);
//list의 데이터 값이 저장된 스택 생성.
List<int> list = new List<int> { 10, 20, 30, 40, 50 };
Stack stack3 = new Stack(list);
//특정 데이터 형식을 저장할 수 있는 스택 생성.
Stack<int> stack4 = new Stack<int>();
2. Push() - 데이터 추가
- 후입선출이기 떄문에 역순으로 출력됩니다.
Stack stack = new Stack();
stack.Push("겁니다");
stack.Push("나올");
stack.Push("거꾸러");
foreach (var item in stack)
{
Debug.Log(item);
}
3. Pop() - 데이터 제거 및 반환
Stack stack = new Stack();
stack.Push("겁니다");
stack.Push("나올");
stack.Push("거꾸러");
//Pop()으로 맨 위의 값을 제거 후 그 제거한 값을 obj에 저장.
object obj = stack.Pop();
foreach (var item in stack)
{
Debug.Log(item);
}
Debug.Log("-----------------");
Debug.Log(obj);
4. Peek() - 맨 위 데이터 확인
Stack stack = new Stack();
stack.Push("겁니다");
stack.Push("나올");
stack.Push("거꾸러");
object obj = stack.Peek();
Debug.Log(obj);
5. Count - 해당 큐의 데이터 수
- 해당 스택의 카운트 즉, 몇 층짜리 건물인지 알 수 있습니다.
Stack stack = new Stack();
stack.Push("겁니다");
stack.Push("나올");
stack.Push("거꾸러");
int num = stack.Count;
Debug.Log(num);
6. Clear() - 모든 데이터 제거
- 스택을 Clear()를 씀으로써 해당 스택 속 값을 지구상에서 없애버릴 수 있습니다.
Stack stack = new Stack();
stack.Push("겁니다");
stack.Push("나올");
stack.Push("거꾸러");
stack.Clear();
Debug.Log(stack.Count);
'C# > 자료구조 이해하기' 카테고리의 다른 글
C# 오름차순과 내림차순 정렬에 대해 알아보자! (0) | 2024.03.10 |
---|---|
C# List(리스트)에 대해 알아보자! (0) | 2024.03.10 |
C# Dictionary에 대해 알아보자! (0) | 2024.03.05 |
C# 큐(Queue)에 대해 알아보자! (0) | 2024.03.05 |
C# 배열(Array)을 알아보자! (2) | 2024.03.05 |