알고리즘/수업내용

Queue 순서도

띵킹진 2022. 7. 4. 11:50

Enqueue
Peak
Count
Dequeue


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Study13
{
    public class Node<T>
    {
        public T data;
        public Node<T> next;
        public Node(T data)
        {
            this.data = data;
            this.next = null;
        }
    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Study13
{
    public class Queue<T>
    {
        private Node<T> head = null;
        private Node<T> tail = null;
        public Queue()
        {

        }

        public void Enqueue(T data)
        {
            if (this.head == null)
            {
                this.head = new Node<T>(data);
                this.tail = this.head;
            }
            else
            {
                this.tail.next = new Node<T>(data);
                this.tail = this.tail.next;
            }
        }

        public T Dequeue()
        {
            if (this.head == null)
            {
                throw new Exception();
            }

            T data = head.data;

            if (head == tail)
            {
                head = tail = null;
            }
            else
            {
                head = head.next;
            }
            return data;
        }

        public int Count()
        {
            if(head == null)
            {
                return 0;
            }
            else
            {
                int cnt = 1;
                Node<T> current = head;
                while (current.next != null)
                {
                    cnt++;
                    current = current.next;
                }
                return cnt;
            }
        }
        public void Peak()
        {
            T data;
        if (head == null)
            {
                Console.WriteLine("empty");
            }
            else
            {
                data = head.data;
                Console.WriteLine(data);
            }
        }
    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Study13
{
    public class App
    {

        public App()
        {
            Console.WriteLine("app");
            Queue<int> queue = new Queue<int>();
            queue.Enqueue(3);
            queue.Enqueue(5);
            queue.Enqueue(7);
            queue.Enqueue(9);
            queue.Dequeue();
            int a = queue.Count();
            Console.WriteLine(a);
            queue.Peak();
            queue.Peak();
            queue.Peak();
            queue.Peak();
        }
    }
}