ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Stack<T>의 구현
    C# 예제 공부일기 2020. 7. 14. 18:58

    후입선출(Last-in-first-out, LIFO) 형태의 자료를 다룰 때는 스택을 사용한다. 제일 나중에 들어온 자료가 제일 먼저 나가는 자료구조이다. C# 컬렉션에는 Stack<T>가 있어서 스택이 필요하면 제공되는 Stack<T>를 쓰면 된다.

     

    스택에 저장되는 값이 여러가지 일 수 있으므로 제네릭으로 정의한다. Mystack<T> 클래스에는 10개의 자료를 저장하는 arr] 배열과 스택 포인터 top이 필드로 정의된다. 메소드는 생성자 메소드와 Push(), POP() 메소드가 있다.

     

    필드 또는 메소드 내용
    T arr[] 스택을 구성하는 배열
    int top 스택포인터
    MyStack() 생성자 top을 0으로 만든다
    Push(T val) 스택에 val을 저장한다.
    T Pop() 스택에서 값을 하나 꺼낸다.

     

     

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace StackPractice
    {
        class MyStack<T>
        {
            const int maxSize = 10;
            private T[] arr = new T[maxSize];
            private int top;
    
            public MyStack()
            {
                top = 0;
            }
            public void Push(T val)
            {
                if (top<maxSize)
                {
                    arr[top] = val;
                    ++top;
                }
                else
                {
                    Console.WriteLine("Stack Full");
                    return;
                }
            }
            public T Pop()
            {
                if(top>0)
                {
                    --top;
                    return arr[top];
                }
                else
                {
                    Console.WriteLine("Stack Empty");
                    return default;
                }
            }
        }
        class Program
        {
            static void Main(string[] args)
            {
                MyStack<int> a = new MyStack<int>();
    
            }
        }
    }
    

     

     

    기본적인 구조

    push

    Pop

    최종 상태

     

    'C# 예제 공부일기' 카테고리의 다른 글

    Queue<T> 의 구현  (0) 2020.07.14
    스택을 이용한 프로그램  (0) 2020.07.14
    LinkedList 클래스를 활용한 프로그램  (0) 2020.07.13
    LinkedList의 구현  (0) 2020.07.13
    dynamic 형을 사용하는 일반화 프로그램  (0) 2020.07.13
Designed by Tistory.