• 二、队列


    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];
        }
    
    }
  • 相关阅读:
    财务自由之路
    权力的48条法则
    将进酒
    DELL服务器报价,有公司需要可以联系,谢谢。北京经纬恒通商贸有限公司秦嘉俊
    实战HTML5表单
    《HTML5+CSS3精通》
    行路难
    事件入门
    DOM
    剑指offer---包含min函数的栈
  • 原文地址:https://www.cnblogs.com/zsy-code/p/13508232.html
Copyright © 2020-2023  润新知