zoukankan      html  css  js  c++  java
  • 数据结构与算法(Java版)_03_队列

    队列

    队列是一个有序列表,可以用数组或者链表来实现。

    队列遵循先进先出的原则,即先存入队列的数据先被取出。

    代码实现:

    package dataStructureAtShangGuiGu;
    
    import java.util.Scanner;
    
    public class QueueDemo {
        public static void main(String[] args) {
            QueueTest queue = new QueueTest(3);
            Scanner scanner = new Scanner(System.in);
            boolean loop = true;
            while(loop) {
                sopInfo();
                char ch = scanner.next().charAt(0);
                switch(ch){
                    case 'a':
                        System.out.println("请输入:");
                        queue.add(scanner.nextInt());
                        break;
                    case 'g':
                        queue.get();
                        break;
                    case 'h':
                        queue.showHead();
                        break;
                    case 's':
                        queue.show();
                        break;
                    case 'e':
                        loop = false;
                        scanner.close();
                        break;
                        
                }
            }
        }
        private static void sopInfo() {
            System.out.println("--------------------------");
            System.out.println("a(add)添加元素");
            System.out.println("g(get)获取元素");
            System.out.println("h(head)查看第一个元素");
            System.out.println("s(show)查看所有元素");
            System.out.println("e(exit)退出");
            System.out.println("--------------------------");
        }
    }
    class QueueTest{
        private int maxSize; //队列最大容量
        private int front; //队列头部指针
        private int rear;  //队列尾部指针
        private int[] arr; //作为队列存储容器
        QueueTest(int maxSize){ //初始化队列
            this.maxSize = maxSize;
            this.front = -1;
            this.rear = -1;
            this.arr = new int[maxSize];
        }
        private boolean isEmpty() { //判断队列是否需为空
            if(this.front==this.rear) return true;
            return false;
        }
        private boolean isFull() { //判断队列是否满了
            if(this.rear==(this.maxSize-1)) return true;
            return false;
        }
        public void add(int num) { //向队列添加数据
            if(this.isFull()) {
                System.out.println("队列已满,无法追加数据!");
                return;
            }
            this.rear++;
            this.arr[this.rear] =  num;
        }
        public void get() { //从队列获取一个数据
            if(this.isEmpty()) {
                System.out.println("队列为空!没有数据可以获取!");
                return;
            }
            this.front++;
            System.out.println("取出的元素是:"+arr[this.front]);
        }
        public void show() { //查看模拟队列容器情况
            for(int i=0;i<arr.length;i++) {
                System.out.printf("arr[%d]=%d
    ",i,this.arr[i]);
            }
        }
        public void showHead() { //查看队列第一个元素
            if(this.isEmpty()) {
                System.out.println("队列为空!无法查看队列第一个元素!");
                return;
            }
            System.out.println("第一个元素是:"+this.arr[this.front+1]);
        }
    }

    运行测试:

    先添加元素,然后查看第一个元素

     依次取一个元素,然后查看头元素

    将队列元素取尽: 

     取尽元素后再添加:

     数据已经取完了,但是发现添加不了数据,因为指针rear已经到达队列后面了!

  • 相关阅读:
    f.lux
    Gidot TypeSetter (排版助手) 3.1.1.2
    FastStone Image Viewer --- 图片查看器
    www.nocmd.com 精品软件 坚持绿色之路 共筑生态之基
    Geek Uninstaller 1.4.5.136 卸载工具绿色版
    在线统计,在线调查意见,在线报名 --- 麦客
    QQ群管理 --- 免费提取QQ群所有成员
    8个在线接收手机短信验证码的免费网络服务整理
    微信群成员导出工具2.3下载 & 歪碰微信成员导出工具
    安装VSTO环境的方法
  • 原文地址:https://www.cnblogs.com/wmskywm/p/15422736.html
Copyright © 2011-2022 走看看