数据结构——使用数组模拟环形队列——Java实现

使用数组模拟环形队列——Java实现

  • 队列介绍
  • 数组模拟环形队列实现
    • 数组模拟环形队列思路
    • 代码实现

队列介绍

  1. 队列是一个有序列表,可以用数组列表来实现。
  2. 队列遵循先入先出原则,即:先存入队列的数据,先取出;后存入的数据后取出
  3. 上一篇文章中介绍了数组模拟队列,但是该队列只能使用一次,本篇文章对其进行优化,使数组模拟环形队列,可以达到队列的复用。

数组模拟环形队列实现

数组模拟环形队列思路

  1. 队列本身是有序列表,若使用数组的结构来存储队列的数据,则队列数组的声明如下图,其中maxSize是该队列的最大容量。
    与模拟队列不同之处:
  2. front变量的含义调整:front指向队列的第一个元素,即arr[front]就是队列的第一个元素,front的初始值为0
  3. rear变量的含义调整:rear指向队列的最后一个元素的后一个位置,因为我们希望空出一个空间作为标志,rear的初始值为0
  4. 当队列满时,条件是**(rear+1)%maxSize==front**。(环形队列满时,rear在front前面,那么(rear+1)%maxSize的值就为front)
  5. 当队列为空时,rear==front
  6. 队列中有效的数据个数:(rear+maxSize-front)%maxSize

代码实现

代码实现

import java.util.Scanner;

public class CircleArrayQueueDemo {
   
    public static void main(String[] args) {
   
        //创建一个队列
        System.out.println("测试数组模拟环形队列的案例");
        CircleArray queue = new CircleArray(3);
        char key = ' ';//接收用户输入
        Scanner scanner = new Scanner(System.in);
        boolean loop = true;
        //输出一个菜单
        while (loop){
   
            System.out.println();
            System.out.println("s(show):显示队列");
            System.out.println("e(exit):退出程序");
            System

你可能感兴趣的:(数据结构和算法分析,java,队列,数据结构,算法)