首页 > 其他分享 >数据结构-数据模拟队列

数据结构-数据模拟队列

时间:2023-02-02 09:22:14浏览次数:49  
标签:return 队列 int maxSize rear front 数据结构 public 模拟

模拟单向队列

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;
        rear = -1;
    }

    //    判断是否为满
    public boolean isFull() {
        return rear == maxSize - 1;
    }

    //    判断是否为空
    public boolean isEmpty() {
        return rear == front;
    }

    //    添加数据
    public void add(int data) {
        if (isFull()) {
            System.out.println("队列已满");
            return;
        }
        rear++;
        arr[rear] = data;
    }

    //    获取队列数据
    public int get() {
        if (isEmpty()) {
            throw new RuntimeException("队列为空");

        }
        front++;
        return arr[front];
    }

    //    显示所有数据
    public void showQueue() {
        if (isEmpty()) {
            System.out.println("队列为空");
            return;
        }
        for (int i :
                arr) {
            System.out.println(i);

        }
    }

    //    获取头部数据
    public int getHead() {
        if (isEmpty()) {
            throw new RuntimeException("队列为空");

        }
        front++;
        return arr[front];
    }


}

模拟双向循环队列

class ArrayQueue2 {
    private int maxSize;//3
    private int front;//0
    private int rear;//0
    private int[] arr;

    public ArrayQueue2(int maxSize) {
        this.maxSize = maxSize;
        arr = new int[maxSize];
        front = 0;
        rear = 0;
    }

    //判断是为为满
    public boolean isFull() {
        return (rear+1)%maxSize == front;
    }

    //判断是否为空
    public boolean isEmpty() {
        return rear == front;
    }

    //添加数据
    public void add(int data) {
        if (isFull()) {
            System.out.println("队列已满");
            return;
        }

        arr[rear] = data;// 0 1 2
        rear = (rear+1) % maxSize;
    }

    //    获取队列数据
    public int get() {
        if (isEmpty()) {
            throw new RuntimeException("队列为空");

        }
        int value = arr[front];
        front = (front+1) %maxSize;
        return value;
    }

    //    显示所有数据
    public void showQueue() {
        if (isEmpty()) {
            System.out.println("队列为空");
            return;
        }
        for (int i = front; i < front + size(); i++) {
            System.out.println(i%maxSize +"  "+arr[i%maxSize]);
        }
    }

    //    获取头部数据
    public int getHead() {
        if (isEmpty()) {
            throw new RuntimeException("队列为空");

        }
        int v=arr[front];
        front++;
        return v;

    }
    //    获取有效数据个数
    public int size(){
        return (rear + maxSize - front)%maxSize;
    }




}

 

标签:return,队列,int,maxSize,rear,front,数据结构,public,模拟
From: https://www.cnblogs.com/xming2023/p/17084827.html

相关文章

  • 数据结构-详解优先队列的二叉堆(最大堆)原理、实现和应用-C和Python
    一、堆的基础1.1优先队列和堆优先队列(PriorityQueue):特殊的“队列”,取出元素顺序是按元素优先权(关键字)大小,而非元素进入队列的先后顺序。若采用数组或链表直接实现优......
  • [数据结构] 哈夫曼树
    哈夫曼树哈夫曼树简介给定N个权值作为N个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(HuffmanTree)。哈夫曼......
  • 队列
    队列是一种先进先出线性表,FIFO;表的一段(表尾)插入,表的另一点端(表头)删除;同线性表一样仍为一对一关系;有顺序队或链队;只能在队首或队尾操作Q=(a1队头,a2,...,an队尾)线性......
  • 关于如何将uniapp连接安卓模拟器进行app开发
    Windows环境夜神模拟器下载安装https://www.yeshen.com/查看夜神模拟器的端口打开夜神模拟器的安装目录点开选择这个文件使用vscode打开搜索guestport="5555"......
  • 数据结构——最大堆
    一、堆堆(英语:heap)是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵树的数组对象。堆总是满足下列性质:堆中某个节点的值总是不大于或不小于其父节点......
  • 数据结构——优先队列
    一、优先队列优先队列顾名思义,就是优先权最大的排在队列的头部,而优先权的判断是根据对象的compare方法比较获取的,保证根节点的优先级一定比子节点的优先级大。所以放入到优......
  • 数据结构——线段树
    一、概述线段树是一种二叉搜索树,其存储的是一个区间的信息,每个结点以结构体的形式去存储,每个结构体包含三个元素:区间左端点、区间右端点、该区间要维护的信息(视实际情况而......
  • 数据结构——Trie
    一、Trie字典树在计算机科学中,trie,又称前缀树或字典树,是一种有序树,用于保存关联数组,其中的键通常是字符串。与二叉查找树不同,键不是直接保存在节点中,而是由节点在树中的位......
  • 数据结构——并查集
    一、并查集的概念在计算机科学中,并查集是一种树形的数据结构,用于处理不交集的合并(union)及查询(find)问题。 并查集可用于查询网络中两个节点的状态,这里的网络是......
  • 数据结构——AVL树
    一、平衡二叉树平衡二叉树也称平衡二叉搜索树(Self-balancingbinarysearchtree)是一种结构平衡的二分搜索树。 平衡二叉树由二分搜索树发展而来,在二分搜索树的基础上......