-
큐를 이용한 프로그램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