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();
}
}
数组实现循环队列
最新推荐文章于 2025-05-21 09:03:12 发布