• 数据结构 环形队列


    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;
            }
    
        }
    }
    
    
  • 相关阅读:
    thinkphp中<eq>标签的使用
    Thinkphp中的eq比较标签
    select取数据库值设为默认值,TP框架模板中ifelse
    fastadmin 前端根据status自定义显示不同的内容
    CMS自定义表单无法切换“是否需要登录”开关
    js获取域名
    fastadmin 页面添加编辑日期时间
    bootstrap-table给单元格添加链接
    python相关资料
    区块链共识机制 —— PoW共识的Python实现
  • 原文地址:https://www.cnblogs.com/fxzemmm/p/14847947.html
Copyright © 2020-2023  润新知