zoukankan      html  css  js  c++  java
  • LeetCode-C#实现-队列(#622)

    622. Design Circular Queue

    设计循环队列

    解题思路

    公式:tail=(tail+1)%n,n为队列长度。

    入队时,tail后移,出队时,head后移。

    记录count,判断队满和队空。

    获取队尾元素时,因为入队时先记录数据再让tail改变,

    所以需要让tail恢复变化,即(tail-1)%n。如果tail=0就直接返回数组最后一位元素。

    public class MyCircularQueue {
        public int count;
        public int[] data;
        public int head;
        public int tail; 
        public int length;
        /** Initialize your data structure here. Set the size of the queue to be k. */
        public MyCircularQueue(int k) {
            count=0;
            head=0;
            tail=0;
            length=k;
            data=new int[k];
        }
    
        /** Insert an element into the circular queue. Return true if the operation is successful. */
        public bool EnQueue(int value) {
            if(IsFull()) 
                return false;
            data[tail]=value;
            tail=(tail+1)%length;
            count++;
            return true;
        }
    
        /** Delete an element from the circular queue. Return true if the operation is successful. */
        public bool DeQueue() {
            if(IsEmpty())
                return false;
            head=(head+1)%length;
            count--;
            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 tail==0?data[length-1]:data[(tail-1)%length];
        }
    
        /** Checks whether the circular queue is empty or not. */
        public bool IsEmpty() {
            return count==0;
        }
    
        /** Checks whether the circular queue is full or not. */
        public bool IsFull() {
            return count==length;
        }
    }
  • 相关阅读:
    第一章数据结构——实现线性表
    hdu 4454 Stealing a Cake(三分之二)
    找呀志_java网络编程(4)TCP/IP、Http和Socket差额
    Velocity脚本新手教程
    2015第15周日PostgreSQL学习
    2015第15周六Java线程池
    2015第15周五寻找身边聪明的人
    2015第15周四
    2015第15周三
    2015第15周二
  • 原文地址:https://www.cnblogs.com/errornull/p/9881708.html
Copyright © 2011-2022 走看看