Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C#에서 푸시(Push)·팝(Pop) 연산으로 스택(Stack) 구현하기

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만 스택에 남게 됩니다.