C#/수업 내용

[C#] Queue 복습

JSH1 2021. 9. 24. 10:15
        public App()
        {
            Queue queue = new Queue();

            queue.Enqueue(3);
            queue.Enqueue(5);
            queue.Enqueue(7);
            queue.Enqueue(9);

            Console.WriteLine("Dequeue: {0}", queue.Dequeue());
            Console.WriteLine("Dequeue: {0}", queue.Dequeue());
            Console.WriteLine();

            Console.WriteLine("Peek: {0}", queue.Peek());
            Console.WriteLine();

            Console.WriteLine("Count: {0}", queue.Count());
        }
    class Queue
    {
        private class Node
        {
            public int Data;
            public Node Next;

            public Node(int data)
            {
                Data = data;
            }
        }

        private Node head;
        private Node tail;

        public void Enqueue(int value)
        {
            if (head == null)
            {
                head = new Node(value);
                tail = head;
            }
            else
            {
                tail.Next = new Node(value);
                tail = tail.Next;
            }
        }

        public int Dequeue()
        {
            if (head == null)
            {
                throw new InvalidOperationException();
            }
            else if (head == tail)
            {
                int value = head.Data;

                head = null;
                tail = null;

                return value;
            }
            else
            {
                int value = head.Data;

                Node temp = head.Next;
                head = temp;

                return value;
            }
        }

        public int Peek()
        {
            if (head == null)
            {
                throw new InvalidOperationException();
            }
            else
            {
                return head.Data;
            }
        }

        public int Count()
        {
            int count = 0;

            if (head == null)
            {
                return count;
            }

            else
            {
                Node temp = head;
                return Count(head, count + 1);
            }
        }

        private int Count(Node temp, int count)
        {
            if (temp.Next == null)
            {
                return count;
            }

            else
            {
                return Count(temp.Next, count + 1);
            }
        }
    }

'C# > 수업 내용' 카테고리의 다른 글

[C#] 일반 트리 level order traversal  (0) 2021.09.26
[C#] Tree  (0) 2021.09.24
[C#] Queue  (0) 2021.09.23
[C#] Stack 복습  (0) 2021.09.23
[C#] 2021-09-17 역폴란드 표기법  (0) 2021.09.18