ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 스택을 이용한 프로그램
    C# 예제 공부일기 2020. 7. 14. 19:04

    10개의 랜덤 숫자를 스택에 넣고 다시 꺼내어 출력하는 프로그램을 작성한다. 스택에 값을 저장할 때는 push(), 꺼낼 때는 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> stack = new MyStack<int>(); //T의 제네릭에 int 사용
    
                Random r = new Random();
    
                for (int i = 0; i < 10; i++)
                {
                    int val = r.Next(100);
                    stack.Push(val); //1부터 100까지 랜덤한 수  10개 푸쉬
                    Console.WriteLine("Push( " + val + " )");
                }
                Console.WriteLine();
    
                for (int i = 0; i < 10; i++)
                {
                    Console.Write("Pop() = " + stack.Pop() + ","); //스택에서 top에 있는 것 하나씩꺼낸다.
                }
    
            }
        }
    }
    

    32

    2

    클래스를 만들때 애초에 스택의 최대 갯수를 10개로 지정한 arr배열에 가장나중에 들어온 데이터의 인덱스가 top에 저장된다. push를 한다면 top이 마지막에 push한 데이터의 인덱스를 가지고 있다. Pop한다면 top의 데이터를 내보내고 그 밑의 배열인덱스를 top으로 가진다.

    가장 나중에 들어온 데이터인 68이 가장먼저나가는 것을 볼 수 있다.

     

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

    큐를 이용한 프로그램  (0) 2020.07.14
    Queue<T> 의 구현  (0) 2020.07.14
    Stack<T>의 구현  (0) 2020.07.14
    LinkedList 클래스를 활용한 프로그램  (0) 2020.07.13
    LinkedList의 구현  (0) 2020.07.13
Designed by Tistory.