ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 큐를 이용한 프로그램
    C# 예제 공부일기 2020. 7. 14. 19:43

    5개의 랜덤 숫자를 큐에 저장하고, 세 개의 숫자를 꺼내어 출력하는 프로그램을 작성한다. 큐에 값을 저장할 때는 EnQueue() 꺼낼 때는 DeQueue()를 사용한다.

     

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace QueuePractice
    {
        class Node<T>
        {
            internal T value;
            internal Node<T> next; //다음 노드 가리키는 부분
            public Node(T value) 
            {
                this.value = value;
                this.next = null;
            }
        }
        class MyQueue<T>
        {
            internal Node<T> first = null; //가장 첫 노드 (순서상)
            internal Node<T> last = null; //가장 마지막 노드 (순서상)
    
            internal void EnQueue(Node<T> node)
            {
                if (last == null) //가장 첫 노드라면
                    first = last = node; //first last 모두 새로운 노드를 가리킨다.
                else
                {
                    last.next = node; //기존 노드가 있다면 last 는 새로 들어온 데이터를 가리킨다.
                    last = node;
                }
            }
            internal T DeQueue()
            {
                if(first ==null)
                {
                    Console.WriteLine("Queue Empty");
                    return default(T);
                }
                else
                {
                    T value = first.value;
                    first = first.next; //first가 가리키고 있는 부분을 내보내고
                    return value;       //그 다음으로 들어온 데이터를 first가 가리킨다.
                }
            }
            internal void Print()
            {
                for (Node<T> t = first; t != null; t = t.next)
                    Console.Write(t.value + " -> ");
                Console.WriteLine();
            }
    
        }
        class Program
        {
            static void Main(string[] args)
            {
                Random r = new Random();
                MyQueue<float> que = new MyQueue<float>();
    
                for(int i=0;i<10;i++)
                {
                    que.EnQueue(new Node<float>(r.Next(100) / 100.0F));
                }
                que.Print();
    
                for(int i=0;i<10;i++)
                {
                    Console.WriteLine("DeQueue: {0} ",que.DeQueue());
                }
                que.Print();
            }
        }
    }
    

    가장 먼저 enque된 순으로 dequeue됨을 볼 수 있다.

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

    List<T> 컬렉션  (0) 2020.07.14
    컬렉션, ArrayList의 사용  (0) 2020.07.14
    Queue<T> 의 구현  (0) 2020.07.14
    스택을 이용한 프로그램  (0) 2020.07.14
    Stack<T>의 구현  (0) 2020.07.14
Designed by Tistory.