zoukankan      html  css  js  c++  java
  • 数据结构 环形队列

    package com.数据结构;
    
    import java.util.Scanner;
    
    public class 环形队列 {
        public static void main(String[] args){
            LinkedArray queue = new LinkedArray(5);
            Scanner scanf = new Scanner(System.in);
            boolean flag = true;
            while(flag){
                System.out.println("L 显示队列");
                System.out.println("A 增加数据");
                System.out.println("G 取数首数据");
                System.out.println("S 链表数据数量");
                System.out.println("E 退出程序");
                String ch = scanf.next();
                try{
                    switch (ch){
                        case "L" :{
                            queue.look();
                        }break;
                        case "A" :{
                            queue.add(scanf.nextInt());
                        }break;
                        case "G" :{
                            System.out.println("数据为"+queue.qv());
                        }break;
                        case "E" :{
                            flag= false;
                            break;
                        }
                        case "S" :System.out.println("元素数量:"+queue.queueSize());
                    }
                }catch(Exception e){
                    e.printStackTrace();
                }
            }
           scanf.close();
        }
    }
    class LinkedArray{ //功能 :增加数据  取出数据 遍历链表 判断是否为空 判断是否已满  获取元素数量
        private int maxSize; //最大容量为maxSize-1 因为我们约定tail为最后一个元素的后一位 所以会空出一个位置
        private int head ; //指向第一个数据  初始值0
        private int tail ;//执行最后一个元素的后一个位置 初始值0
        private int[] array ;
        public LinkedArray(int maxSize){  //构造方法
            this.maxSize = maxSize;
            array = new int[maxSize] ;
        }
        public boolean max(){  //是否已满
            return ((tail+1+maxSize)%maxSize==head);
        }
        public boolean empty(){ //是否是空的
            return tail==head;
        }
        public void add(int data){ //增加数据
            if(max()){
                throw new RuntimeException("队列已满~~~");
            }
            array[tail] = data ;
            tail = (tail+1)%maxSize;
            System.out.println("添加数据成功~~~");
        }
        public int qv(){ //取出首元素
            if(empty()){
                throw new RuntimeException("队列是空的~~~");
            }
            int value = array[head];
            head = (head +1)%maxSize;
            return value;
        }
        public int queueSize(){ //获取元素数量
            return (this.tail+this.maxSize-this.head)%maxSize;
        }
        public void look(){
            for(int i=head;i!=this.tail;){
                System.out.println(array[i]);
                i = (i +1)%maxSize;
            }
    
        }
    }
    
    
  • 相关阅读:
    js判断选择时间不能小于当前时间的代码
    shell脚本编程之for语句、if语句使用介绍
    linux命令 chattr超级权限控件
    教你配置linux服务器登陆欢迎信息
    PHP基础入门教程 PHP循环函数
    php获取客户端ip地址
    PHP获取域名、IP地址的方法
    两日期间的间隔
    mysql 案例 ~ pt-archiver 归档工具的使用
    mysql 案例 ~ pt修复工具的使用
  • 原文地址:https://www.cnblogs.com/fxzemmm/p/14847947.html
Copyright © 2011-2022 走看看