zoukankan      html  css  js  c++  java
  • 二、队列

    1、队列介绍:

     

     2、数组模拟队列:

     

     

     代码实现:

    public class ArrayQueueDemo {
        public static void main(String[] args) {
    
        }
    }
    //使用数组模拟队列--编写一个ArrayQueue类
    class ArrayQueue{
        private int maxSize;//表示数组的最大容量
        private int front;//队列头
        private int rear;//队列尾
        private int[] arr;//用于存放数据的数组
        //创建队列的构造器
        public ArrayQueue(int maxSize){
            this.maxSize = maxSize;
            arr = new int[maxSize];
            front = -1;//指向队列头部,初始时候,没有数据时指向-1
            rear = -1;//指向队列尾部,初始时候,没有数据时指向-1
        }
    
        //判断队列是否满
        public boolean isFull(){
            return rear == maxSize-1;
        }
    
        //判断队列是否为空
        public boolean isEmpty(){
            return rear == front;
        }
    
        //添加数据到队列
        public void addQueue(int data){
            if(isFull()){
                System.out.println("队列满,不能添加数据");
                return;
            }
            rear ++;
            arr[rear] = data;
        }
    
        //获取队列的数据,出duilie
        public int getQueue(){
            if(isEmpty()){
                System.out.println("队列空,不能去数据");
                return 0;
            }
            front ++;
            return arr[front];
        }
    
        //显示队列的所有数据
        public void shouQueue(){
            if(isEmpty()){
                System.out.println("队列为空");
                return;
            }
            for(int i=front+1;i<rear+1;i++){
                System.out.printf("arr[%d]=%d
    ",i,arr[i]);
            }
        }
    
        //显示队列的头数据,不是取出数据
        public int headQueue(){
            if(isEmpty()){
                System.out.println("队列为空");
                return 0;
            }
            return arr[front+1];
        }
    }

     3、环形队列:

    //环形队列
    class CircleArray {
        private int maxSize;
        private int front;//初始值0
        private int rear;//初始值0
        private int[] arr;
    
        public CircleArray(int maxSize) {
            this.maxSize = maxSize;
            arr = new int[maxSize];
        }
    
        //判断队列是否满
        public boolean isFull(){
            return (rear+1)%maxSize == front;
        }
    
        //判断队列是否为空
        public boolean isEmpty(){
            return rear == front;
        }
    
        public void addQueue(int data){
            if(isFull()){
                System.out.println("队列满了,不能加入数据了");
                return;
            }
            arr[rear] = data;
            rear =(rear+1)%maxSize;
        }
    
        //获取队列的数据,出队列
        public int getQueue(){
            if(isEmpty()){
                System.out.println("队列为空,不能取数据");
                return 0;
            }
            int value = arr[front];
            front = (front+1)%maxSize;
            return value;
        }
    
        //显示队列的所有数据
        public void shouQueue(){
            if(isEmpty()){
                System.out.println("队列为空");
                return;
            }
            for(int i=0;i<arr.length;i++){
                System.out.printf("arr[%d]=%d",i%maxSize,arr[i%maxSize]);
            }
        }
    
        //求出当前队列有效数据的个数
        public int size(){
            return (rear + maxSize - front) % maxSize;
        }
    
        //显示队列的头数据,不是取出数据
        public int headQueue(){
            if(isEmpty()){
                System.out.println("队列为空");
                return 0;
            }
            return arr[front];
        }
    
    }
  • 相关阅读:
    form2js的使用(续BootstrapTable)
    input限定文件上传类型:Microsoft Office MIME types
    Zookeeper环境搭建
    Zookeeper一致性协议——ZAB
    Zookeeper简介
    IOC容器加载流程
    Spring Bean 生命周期
    Spring Framework 5 模块组成、体系结构、整体架构
    什么是 IoC?什么是 DI ? 他们之间有什么关系?
    【MySQL实战45讲】索引部分整理
  • 原文地址:https://www.cnblogs.com/zsy-code/p/13508232.html
Copyright © 2011-2022 走看看