First define several variables and arrays:
a
: Array representing the queue
rear
: Represents the tail of the queue, initialized here to 0
(the subscript of an element is moved one position backward when it is added to the queue)
front
: Represents the head of the queue, also initialized It is 0
(when an element is dequeued, the subscript moves back one position)
maxsize
: The maximum subscript, initialized to 4 here, but the queue can only store 3. (The length of the queue plus one)
A position reserved in the array is used to determine whether the queue is empty or full.
Java related video recommendations: java video tutorial
Refer to the picture below for easy understanding:
At this time The number of elements is 3, which is already full, because the number of arrays is the number of valid elements plus one.
Note: The element subscript can only be 0-3
The example code is as follows:
//数据结构——队列 import java.util.Scanner; public class Queue { int[] a ; int rear; int front; int maxsize; public static void main(String[] args) { Queue queue = new Queue(); Scanner scan = new Scanner(System.in); int i; do { System.out.println("请输入:1入队 2出队 3查看 0退出"); i = scan.nextInt(); switch(i) { case 1: System.out.println("请输入要入队的元素:"); queue.addQueue(scan.nextInt()); break; case 2: queue.exitQueue(); break; case 3: queue.showqueue(); break; } }while(i!=0); System.out.println("退出成功"); } //构造函数 public Queue(){ a = new int[4]; rear = 0; front = 0; maxsize = 4; } //判断队列是否为空 public boolean judgeNull() { return rear == front; } //判断队列是否已满 public boolean judgeFull() { return (rear+1) % maxsize == front; } //入队 public void addQueue(int num) { //判断,若队列已满则结束,不满则将其添加 if(judgeFull()) { System.out.println("队列已满"); return ; } a[rear] = num; rear = (rear+1) % maxsize; } //出队 public void exitQueue() { //判断,若队列为空则结束,非空则将其最前的元素取出 if(judgeNull()) { System.out.println("队列为空"); return ; } front = (front+1) % maxsize; } //显示队列的元素 public void showqueue() { if(judgeNull()) { System.out.println("队列为空"); return ; } for (int i = front; i < front+count(); i++) { System.out.printf("a[%d] = %d\n",i%maxsize,a[i%maxsize]); } } //求出队列的有效个数 public int count() { return (rear+maxsize-front)%maxsize; } }
If you want to learn more java related knowledge, you can visit: java Getting Started Tutorial
The above is the detailed content of How to implement queue entry and exit in java. For more information, please follow other related articles on the PHP Chinese website!