C#/수업 내용

[C#] Queue

JSH1 2021. 9. 23. 12:33

        public App()
        {
            Queue queue = new Queue();

            queue.Enqueue(3);
            queue.Enqueue(5);
            queue.Enqueue(7);
        }
    class Queue
    {
        private class Node
        {
            public int Data;
            public Node Next;

            public Node(int value)
            {
                this.Data = value;
            }
        }

        private Node head;
        private Node tail;
        private int count;

        public void Enqueue(int value)
        {
            if (head == null)
            {
                count++;
                head = new Node(value);
                tail = head;
                Console.WriteLine("Enqueue: {0} 추가", value);
            }
            else
            {
                count++;
                tail.Next = new Node(value);
                tail = tail.Next;
                Console.WriteLine("Enqueue: {0} 추가", value);
            }
        }
    }


        public App()
        {
            Queue queue = new Queue();

            queue.Enqueue(3);
            queue.Enqueue(5);
            queue.Enqueue(7);
            Console.WriteLine("Count: {0}", queue.Count());

            Console.WriteLine("Dequeue: {0}", queue.Dequeue());
            Console.WriteLine("Dequeue: {0}", queue.Dequeue());
            Console.WriteLine("Dequeue: {0}", queue.Dequeue());
            Console.WriteLine("Count: {0}", queue.Count());
        }
        public int Dequeue()
        {
            if (head == tail)
            {
                count--;
                int value = head.Data;

                head = null;
                tail = null;

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

                Node temp = head.Next;
                head = temp;

                return value;
            }
        }
        
        public int Count()
        {
            return count;
        }


            Queue queue = new Queue();

            queue.Enqueue(3);
            queue.Enqueue(5);
            queue.Enqueue(7);
            Console.WriteLine("Count: {0}", queue.Count());
            Console.WriteLine();
            Console.WriteLine("Peek: {0}", queue.Peek());
            Console.WriteLine("Count: {0}", queue.Count());
        public int Peek()
        {
            if (head == null)
            {
                throw new InvalidOperationException();
            }
            else
            {
                return head.Data;
            }
        }


        public int CountRecursive()
        {
            int count = 0;

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

            else
            {
                return CountRecursive(head.Next, count + 1);
            }
        }

        private int CountRecursive(Node node, int count)
        {
            if (node == null)
            {
                return count;
            }

            else
            {
                return CountRecursive(node.Next, count + 1);
            }
        }


            Queue queue = new Queue();

            queue.Enqueue(3);
            queue.Enqueue(5);
            queue.Enqueue(7);
            queue.Enqueue(9);
            Console.WriteLine();
            Console.WriteLine("CountIteration: {0}", queue.CountIteration());
        public int CountIteration()
        {
            int count = 0;

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

            Node temp = head;
            while (true)
            {
                if (temp == null)
                {
                    break;
                }

                count++;
                temp = temp.Next;
            }

            return count;
        }


 

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

[C#] Tree  (0) 2021.09.24
[C#] Queue 복습  (0) 2021.09.24
[C#] Stack 복습  (0) 2021.09.23
[C#] 2021-09-17 역폴란드 표기법  (0) 2021.09.18
[C#] Stack을 Linked List로 구현하기  (0) 2021.09.17