环形队列整理_制作队形图的软件

(4) 2024-07-10 15:12

Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说
环形队列整理_制作队形图的软件,希望能够帮助你!!!。

环形队列:
思路将front指向队列的元素头;
rear指向队列的元素尾+1位置;
留一个空间做约定。
当队列空时条件满足:frontrear;
当队列满的时条件满足(rear+1)%maxSize
front;
队列有效的个数为 :(rear+maxSize+front)%maxSize;
解决了数组的复用问题,节省了资源。
public class CricleArrayQueue {

 private int maxSize;//表示数组的最大容量 //front 变量含义做了一个调整:front指向队列的第一个元素,初始值front=0; private int front; //表示队列头 //rear变量的含义做了一个调整:real指向队列的最后一元素的后一个位置。 //rear的初始值为0; private int rear; //表示队列尾 private int[] arr; //创建数组 public CricleArrayQueue(int maxSize){ this.maxSize = maxSize; arr = new int[maxSize]; } public boolean isFull(){ return (rear+1)%maxSize==front; } public boolean isEmpty(){ return rear==front; } public void addQueue(int n){ if(isFull()){ System.out.println("队列满,不能加入数据"); return; } arr[rear]=n; rear=(rear+1)%maxSize; } public int getQueue(){ if(isEmpty()){ throw new RuntimeException("没有数据,不能取出;"); } //这里需要分析出front是指向队列的第一个元素 //1、先把front对应的值保留到一个临时变量里面 //2、将front后移 //3、将临时保存的变量返回。 int value = arr[front]; front = (front+1)%maxSize; return value; } public void showQueue(){ if(isEmpty()){ System.out.println("队列空的没有数据"); return; } //思路从front开始遍历,遍历 for (int i = front; i<front+size();i++){ System.out.printf("arr[%d]=%d",i%maxSize,arr[i%maxSize]); } } public int size(){ return ((rear + maxSize) - front) % maxSize; } public int showHead(){ if(isEmpty()){ throw new RuntimeException("队列为空,无法取出!"); } return arr[front]; } public static void main(String[] args) { CricleArrayQueue arrayQueue = new CricleArrayQueue(3); Scanner scanner = new Scanner(System.in); arrayQueue.arr.length; while (true){ System.out.println("请您输入"); int a = scanner.nextInt(); switch (a){ case 1: System.out.println(arrayQueue.isEmpty()); //是否为空 break; case 2: System.out.println("请输入"); int aa = scanner.nextInt(); arrayQueue.addQueue(aa); //添加元素 break; case 3: System.out.println(arrayQueue.getQueue()); //取出头元素 break; case 4: arrayQueue.showQueue(); //显示队列 break; case 5: System.out.println(arrayQueue.showHead()); //查看队列头元素 break; } } } 

}

今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

上一篇

已是最后文章

下一篇

已是最新文章

发表回复