본문 바로가기

C#

C# 문법 -STACK<T>구현

반응형

후입선출의 형태의 자료를 다룰때는 스택을 사용합니다. 

제일 나중에 들어온 자료가 제일 먼저 나가는 자료구조입니다. 

.NET 컬렉션에는 STACK<T>강 있어 사용하면됩니다. 

하지만 원리와 구조에 대해 알아보기 위해 직접 코딩해보겠습니다. 

namespace Stackimplementation
{
    class Program
    {
        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)
                {
                    val = arr[top];
                    top++;
                }
                else
                {
                    Console.WriteLine("Stack Full");
                    return;
                }
            }
            public T Pop()
            {
                if (top>0)
                {
                    --top;
                    return arr[top];
                }
                else
                {
                    Console.WriteLine("Stack Empty");
                    return default;
                }
            }


        }

Push 와 Pop 메서드를 만들어 준다 . 선입 선출의 원칙으로 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Stackimplementation
{
    class Program
    {
        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;
                }
            }
        }

        
        static void Main(string[] args)
        {
            MyStack<int> stack = new MyStack<int>();
            Random random = new Random();

            for (int i = 0; i < 10; i++)
            {
                int val = random.Next(100);
                stack.Push(val);
                Console.Write("Push("+val+")");
            }
            Console.WriteLine();

            for (int i = 0; i < 10; i++)
            {
                Console.Write("Pop()="+stack.Pop()+",");
            }
        }
    }
}

for문을 사용하여 100 안으로 랜덤값을 추출해 본다

반응형