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];
        }
    
    }
  • 相关阅读:
    正则表达式积累
    Windows界面编程第七篇 文件拖拽(文件拖放)
    设置 Eclipse 智能代码提示,大幅度减少 alt+/ 使用频率,打每个字都出现代码提示的办法
    CodeFx:一站式微软开发技术解决方案 .
    JS添加可信站点、修改ActiveX安全设置,禁用弹出窗口阻止程序的方法
    Eclipse支持HTML&JS&ExtJS&jQuery代码智能提示
    如何在Web上判断是否已经安装了某个ActiveX控件
    去掉Eclipses的鼠标悬浮提示和增加输代码提示
    在jsp页面下, 让eclipse完全支持HTML/JS/CSS智能提示
    Java集合类ArrayList循环中删除特定元素
  • 原文地址:https://www.cnblogs.com/zsy-code/p/13508232.html
Copyright © 2011-2022 走看看