美文网首页
用数组实现循环队列

用数组实现循环队列

作者: 漫行者_ | 来源:发表于2021-08-09 00:38 被阅读0次

    循环队列这块思考的几十分钟才彻底想清楚需要注意的地方。


    image.png
    image.png
    • rear指针的位置是不存数值的。front只是表示末端,与该点有没有存储数值没有关系。完全根据rear指针来。
    • 因此产生队列为空和满员的时候都是front==rear。因此中间隔一个才实现判断。
    • 在这个题中经常要用到下一个位置的坐标是多少,因此最好写一个next的函数
    • 也就是说next(rear) == front的时候,表示存满。
      rear ==front的时候表示没有数值。
      代码如下:
    /**
     * @author niejian
     * @date 2021/8/29 16:41
     */
    public class Queue<T> {
        private Object[] array;
        private int front;
        private int rear;
    
        public Queue(int arrayNum) {
            array = new Object[arrayNum];
        }
    
        public boolean insert(T object) {
            if(next(front) == rear) {
                return false;
            }
            array[front++] = object;
            return true;
        }
    
        public int getSize() {
            return front - rear;
        }
    
        private int next(int front) {
            return (front+1)%array.length;
        }
    
        public static void main(String[] args) {
            Queue<Integer> queue = new Queue<>(3);
            System.out.println(queue.insert(1));
            System.out.println(queue.insert(2));
            System.out.println(queue.insert(3));
        }
    }
    
    

    相关文章

      网友评论

          本文标题:用数组实现循环队列

          本文链接:https://www.haomeiwen.com/subject/dtvavltx.html