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];
        }
    
    }
  • 相关阅读:
    python 抓取网页
    Vim XDebug调试PHP php远程调试
    10 条 nmap 技巧
    Linux修改文件及文件夹权限
    mysql 常用命令 汇总
    VS2010打开过多的IntelliTrace.exe进程导致虚拟内存不足的解决办法
    黄聪:MYSQL远程连接失败:ERROR 1130: mysql 1130连接错误的有效解決方法
    黄聪:WordPress搬家更换域名教程
    黄聪:使用 ALinq 实现 Linq to MySQL【转】
    黄聪:Filezilla 二进制上传设定
  • 原文地址:https://www.cnblogs.com/zsy-code/p/13508232.html
Copyright © 2011-2022 走看看