zoukankan      html  css  js  c++  java
  • Implement Circular Queue using Array

    package com.javainuse;
    
    import java.util.Arrays;
    
    public class CircularQueueImplementation {
    
        public static void main(String[] args) {
    
            CircularQueue<Integer> circularQueue = new CircularQueue(8);
    
            circularQueue.enqueue(15);
            circularQueue.enqueue(16);
            circularQueue.enqueue(17);
            circularQueue.enqueue(18);
            circularQueue.enqueue(19);
            circularQueue.enqueue(20);
            circularQueue.enqueue(21);
            circularQueue.enqueue(22);
    
            System.out.println("Full Circular Queue" + circularQueue);
    
            System.out.print("Dequeued following element from circular Queue ");
            System.out.println(circularQueue.dequeue() + " ");
            circularQueue.enqueue(23);
            System.out.println("After enqueueing circular queue with element having value 23");
            System.out.println(circularQueue);
        }
    
    }
    
    //implementation of Circular Queue using Generics
    class CircularQueue<E> {
    
        private int currentSize; //Current Circular Queue Size
        private E[] circularQueueElements;
        private int maxSize; //Circular Queue maximum size
    
        private int rear;//rear position of Circular queue(new element enqueued at rear).
        private int front; //front position of Circular queue(element will be dequeued from front).      
    
        public CircularQueue(int maxSize) {
            this.maxSize = maxSize;
            circularQueueElements = (E[]) new Object[this.maxSize];
            currentSize = 0;
            front = 0;
            rear = 0;
        }
    
        /**
         * Enqueue elements to rear.
         */
        public void enqueue(E item) throws QueueFullException {
            if (isFull()) {
                throw new QueueFullException("Circular Queue is full. Element cannot be added");
            }
            else {
                circularQueueElements[rear] = item;
                rear = (rear + 1) % circularQueueElements.length;
                currentSize++;
            }
        }
    
        /**
         * Dequeue element from Front.
         */
        public E dequeue() throws QueueEmptyException {
            E deQueuedElement;
            if (isEmpty()) {
                throw new QueueEmptyException("Circular Queue is empty. Element cannot be retrieved");
            }
            else {
                deQueuedElement = circularQueueElements[front];
                circularQueueElements[front] = null;
                front = (front + 1) % circularQueueElements.length;
                currentSize--;
            }
            return deQueuedElement;
        }
    

      

  • 相关阅读:
    Oracle 小函数的使用
    QML使用MouseArea
    QML渐变色
    使用fontawesome
    查看QML数据类型
    QML使用moveToThread线程【QML工程使用C++】
    QML登录界面
    QML异常:Cannot anchor to an item that isn't a parent or sibling
    QML最大化
    TensorFlow基础笔记(9) Tensorboard可视化显示以及查看pb meta模型文件的方法
  • 原文地址:https://www.cnblogs.com/apanda009/p/7927447.html
Copyright © 2011-2022 走看看