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;
        }
    

      

  • 相关阅读:
    Android10_内容提供者_内容观察者_标题栏
    Android08_广播接受者_服务
    Android09_远程服务_系统服务_aidl
    Android07_多界面_Activity生命周期
    Android06_getpost提交_文件上传_多线程下载
    Android_handler_网络请求_img框架
    Android开发04
    java 正则表达式验证邮箱
    postman 基本用法
    java 微信申请退款的开发
  • 原文地址:https://www.cnblogs.com/apanda009/p/7927447.html
Copyright © 2011-2022 走看看