C#학습노트(6)-----디자인 순환 대기열

1856 단어 C#
public class MyCircularQueue
    {

        private
            
            int size;
            int head;
            int tail;
            int[] data;

        public MyCircularQueue(int k)
        {
            Array.Resize(ref data, k);
            head = -1;
            tail = -1;
            size = k;

        }
        /** Insert an element into the circular queue. Return true if the operation is successful. */
        public bool EnQueue(int value)
        {
            if (IsFull())
                return false;
            if (IsEmpty())
            {
                head = 0;
            }
            tail = (tail + 1) % size;
            data[tail] = value;
            return true;  
        }

        /** Delete an element from the circular queue. Return true if the operation is successful. */
        public bool DeQueue()
        {
            if (IsEmpty())
                return false;
            if (head == tail)
            {
                head = -1;
                tail = -1;
                return true;
            }
            head = (head + 1) % size;
            return true;
        }
        /** Get the front item from the queue. */
        public int Front()
        {
            if (IsEmpty())
                return -1;
            return data[head];
        }

        /** Get the last item from the queue. */
        public int Rear()
        {
            if (IsEmpty())
                return -1;
            return data[tail];
        }

        /** Checks whether the circular queue is empty or not. */
        public bool IsEmpty()
        {
            return head == -1;
        }

        /** Checks whether the circular queue is full or not. */
        public bool IsFull()
        {
            return ((tail + 1) % size) == head;
        }

        
    }

좋은 웹페이지 즐겨찾기