C# 스택(Stack) 개요
스택(Stack)은 LIFO(Last In, First Out, 후입선출) 방식으로 동작하는 대표적인 자료구조입니다. 가장 나중에 넣은 요소가 가장 먼저 빠져나오는 구조로, C#에서는 System.Collections 네임스페이스에 포함된 Stack 클래스를 통해 손쉽게 사용할 수 있습니다.
요소를 추가할 때는 Push(), 제거할 때는 Pop(), 그리고 제거하지 않고 맨 위의 요소 값만 확인할 때는 Peek() 메서드를 사용합니다.
Push 연산으로 요소 추가하기
Push() 메서드를 사용하면 스택의 맨 위에 새로운 요소를 추가할 수 있습니다.
Stack st = new Stack();
st.Push('A');
st.Push('M');
st.Push('G');
st.Push('W');
Pop 연산으로 요소 제거하기
스택에서 요소를 꺼낼 때는 Pop() 메서드를 사용합니다. 호출할 때마다 스택 맨 위의 요소가 하나씩 제거되며, 제거된 값이 반환됩니다.
st.Pop(); st.Pop();
전체 예제 코드
다음은 Push와 Pop 연산을 활용하여 스택을 구현한 완전한 C# 예제입니다.
using System;
using System.Collections;
namespace CollectionsApplication {
class Program {
static void Main(string[] args) {
Stack st = new Stack();
st.Push('A');
st.Push('M');
st.Push('G');
st.Push('W');
Console.WriteLine("Current stack: ");
foreach (char c in st) {
Console.Write(c + " ");
}
Console.WriteLine();
st.Push('V');
st.Push('H');
Console.WriteLine("The next poppable value in stack: {0}", st.Peek());
Console.WriteLine("Current stack: ");
foreach (char c in st) {
Console.Write(c + " ");
}
Console.WriteLine();
Console.WriteLine("Removing values ");
st.Pop();
st.Pop();
st.Pop();
Console.WriteLine("Current stack: ");
foreach (char c in st) {
Console.Write(c + " ");
}
}
}
}
실행 결과
Current stack: W G M A The next poppable value in stack: H Current stack: H V W G M A Removing values Current stack: G M A
결과 해석
먼저 A, M, G, W 순서로 Push한 뒤 스택을 출력하면, LIFO 구조 특성상 마지막에 넣은 W부터 역순으로 표시됩니다. 이후 V와 H를 추가하면 H가 새로운 최상단 요소가 되며, Peek() 메서드는 이 값을 제거 없이 확인해 줍니다. 이어서 Pop을 세 번 실행하면 H, V, W가 차례대로 제거되어 최종적으로 G M A만 스택에 남게 됩니다.