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

C#에서 스택(Stack) 구현하기: Push·Pop 핵심 정리


스택(Stack)이란?

C#에서 스택(Stack)Push(삽입)와 Pop(삭제) 연산을 통해 구현되는 대표적인 자료구조입니다. 스택은 객체를 LIFO(Last-In, First-Out, 후입선출) 방식으로 관리하는 컬렉션으로, 가장 마지막에 추가된 요소가 가장 먼저 제거됩니다.

C#에서 스택을 사용하려면 System.Collections 네임스페이스에 포함된 Stack 클래스를 활용하면 됩니다.

Stack 클래스의 주요 메서드

번호메서드 및 설명
1public virtual void Clear();
스택에서 모든 요소를 제거합니다.
2public virtual bool Contains(object obj);
특정 요소가 스택에 포함되어 있는지 여부를 확인합니다.
3public virtual object Peek();
스택 맨 위의 개체를 제거하지 않고 그대로 반환합니다.
4public virtual object Pop();
스택 맨 위의 개체를 제거한 뒤 반환합니다.
5public virtual void Push(object obj);
스택 맨 위에 새 개체를 삽입합니다.
6public virtual object[] ToArray();
스택의 내용을 새 배열로 복사합니다.

Push 연산 – 요소 추가하기

Push 연산은 스택의 맨 위에 새로운 요소를 추가합니다.

Stack st = new Stack();
st.Push('A');
st.Push('B');
st.Push('C');
st.Push('D');

Pop 연산 – 요소 제거하기

Pop 연산은 스택의 맨 위에 있는 요소를 제거하면서 반환합니다. 반면 Peek()은 요소를 제거하지 않고 맨 위의 값만 확인하고 싶을 때 사용합니다.

예제: Stack 클래스 활용하기

다음 예제는 Stack 클래스의 Push()Pop() 메서드를 사용해 요소를 추가하고 제거하는 전체 과정을 보여줍니다.

using System;
using System.Collections;

namespace CollectionsApplication {
    class Program {
        static void Main(string[] args) {
            Stack st = new Stack();

            st.Push('A');
            st.Push('B');
            st.Push('C');
            st.Push('D');

            Console.WriteLine("현재 스택: ");
            foreach (char c in st) {
                Console.Write(c + " ");
            }
            Console.WriteLine();

            st.Push('P');
            st.Push('Q');

            Console.WriteLine("스택에서 다음으로 꺼낼 값: {0}", st.Peek());
            Console.WriteLine("현재 스택: ");

            foreach (char c in st) {
                Console.Write(c + " ");
            }

            Console.WriteLine();

            Console.WriteLine("값 제거 중....");
            st.Pop();
            st.Pop();
            st.Pop();

            Console.WriteLine("현재 스택: ");
            foreach (char c in st) {
                Console.Write(c + " ");
            }
        }
    }
}

실행 결과

현재 스택:
D C B A
스택에서 다음으로 꺼낼 값: Q
현재 스택:
Q P D C B A
값 제거 중....
현재 스택:
C B A

마무리

스택은 실행 취소(Undo) 기능, 재귀 호출 관리, 괄호 짝 검사 등 다양한 분야에서 활용되는 기본적인 자료구조입니다. 참고로 C#에서는 System.Collections.Generic 네임스페이스의 Stack<T> 제네릭 버전도 제공되므로, 타입 안전성과 성능이 중요한 환경이라면 제네릭 스택을 사용하는 것이 좋습니다.