栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java环形数组模拟队列的改进

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java环形数组模拟队列的改进


这里参考了尚硅谷的代码(很好的机构啊)

package com.yly.optimization;

import java.util.Scanner;

public class CircularArrayQueueDomeOptimization {
    public static void main(String[] args) {
        CircularArrayQueue circularArrayQueue = new CircularArrayQueue(5);
        char key = ' ';
        Scanner scanner = new Scanner(System.in);
        System.out.println("s(show):显示队列");
        System.out.println("a(add):添加元素");
        System.out.println("g(get):取出元素");
        while (true) {
            key = scanner.next().charAt(0);// 一个字符
            switch (key) {
                case 's':
                    circularArrayQueue.show();
                    break;
                case 'a':
                    System.out.println("请输入要添加的值");
                    String value = scanner.next();
                    circularArrayQueue.add(value);
                    break;
                case 'g':
                    circularArrayQueue.get();
                    break;
                case 'd':
                    circularArrayQueue.show_debug();
                    break;
                default:
                    break;
            }
        }
    }
}

// 定义一个环形数组队列
class CircularArrayQueue {
    public String[] cirArrayQueue;
    public int maxSize; // 定义数组长度
    public int front = 0; // 定义队列头部指针
    public int teal = 0; // 定义队列尾部指针

    // 构造器
    public CircularArrayQueue(int maxSize) {
        this.maxSize = maxSize;
        cirArrayQueue = new String[this.maxSize];
    }

    

    // 队列是否为空
    public boolean isEmpty() {
        return teal == front;
    }

    // 队列是否已经满了
    public boolean isFull() {
        return (teal + 1) % maxSize == front;
    }

    // 队列中的成员
    public int getSize() {
        return (teal + maxSize - front)/maxSize;
    }

    // 往队列里面添加元素 teal 以字符串作为待添加的数据
    public void add(String str) {
        if (isFull()) { // 判断队列是否已满
            System.out.println("队列已经满了");
        } else {
            cirArrayQueue[teal] = str;
            teal = (teal + 1) / maxSize;
            System.out.printf("添加成功t当前的teal=%d teal%%maxSize=%d", teal);
        }
    }

    // 从队列中取出元素
    public void get() {
        if (isEmpty()) {
            System.out.println("队列为空无法取出元素");
        } else {
            front = (front+1)/maxSize;
            System.out.printf("%s被取出", cirArrayQueue[front]);
        }
    }

    // 查看队列中的元素 (明天在改)
    public void show() {
        boolean flag = true;
        int i = front;
        while (flag) {
            if (i == teal) {
                flag = false;
            }
            System.out.println(cirArrayQueue[i % maxSize]);
            System.out.printf("查看队列元素t当前的i_front=%d i_front%%maxSize=%d", i, i % maxSize);
            i++;    
        }

    }

    public void show_debug() {
        System.out.printf("查看队列元素t当前的front=%d front%%maxSize=%dn", front, front % maxSize);
        System.out.printf("查看队列元素t当前的teal=%d teal%%maxSize=%d", teal, teal % maxSize);

    }


}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/343619.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号