数组实现循环队列

本文介绍了一种使用数组实现循环队列的方法,该方法能够充分利用数组空间并避免元素整体移动,提高了队列操作效率。文章详细展示了循环队列的创建、入队、出队和打印等操作,并通过实例演示了其工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.linkedlist.exe.com.queue.exe;

import com.linkedlist.exe.Demo1_LinkedList;

/**
 * @program: *******
 * @Date: *******
 * @Author: Kyrie
 * @Description:  数组实现循环队列
 * 循环队列:不但充分利用了数组的空间,还避免了数组元素整体移动的麻烦。
 * 队列的应用:例如在多线程中,争夺公平锁的等待队列,就是按照访问顺序来决定线程在队列中的次序
 */
public class Demo1_Queue {

    private int[] array;
    private int front = 0;  //队头
    private int rear = 0; //队尾

    public Demo1_Queue(int capacity){
        this.array = new int[capacity];
    }

    //入队
    public void enQueue(int element) throws Exception{
        if((rear + 1) % array.length == front){
            throw new Exception("front队列已满");
        }
        array[rear] = element;
        rear = (rear + 1) % array.length;

    }

    public int deQueue() throws Exception{
        if(rear == front){
            throw new Exception("队列已经为空");
        }
        int element = array[front];
        front = (front + 1) % array.length;
        return element;
    }
    //打印
    public void printQueue(){
        for (int i = front; i != rear ; i = (i+1)%array.length) {
            System.out.println(array[i]);
        }
    }


    public static void main(String[] args) throws Exception {
        Demo1_Queue queue = new Demo1_Queue(6);
        queue.enQueue(1);
        queue.enQueue(2);
        queue.enQueue(3);
        queue.enQueue(4);
        queue.enQueue(5);
        queue.printQueue();
        System.out.println("==================");

        //queue.enQueue(9);
        queue.deQueue();
        queue.deQueue();
        queue.deQueue();
        queue.deQueue();
        queue.printQueue();
        System.out.println("===================");

        queue.enQueue(7);
        queue.enQueue(8);
        queue.enQueue(9);
        queue.enQueue(10);
        queue.printQueue();
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值