1、队列介绍:
2、数组模拟队列:
代码实现:
public class ArrayQueueDemo { public static void main(String[] args) { } } //使用数组模拟队列--编写一个ArrayQueue类 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;//指向队列头部,初始时候,没有数据时指向-1 rear = -1;//指向队列尾部,初始时候,没有数据时指向-1 } //判断队列是否满 public boolean isFull(){ return rear == maxSize-1; } //判断队列是否为空 public boolean isEmpty(){ return rear == front; } //添加数据到队列 public void addQueue(int data){ if(isFull()){ System.out.println("队列满,不能添加数据"); return; } rear ++; arr[rear] = data; } //获取队列的数据,出duilie public int getQueue(){ if(isEmpty()){ System.out.println("队列空,不能去数据"); return 0; } front ++; return arr[front]; } //显示队列的所有数据 public void shouQueue(){ if(isEmpty()){ System.out.println("队列为空"); return; } for(int i=front+1;i<rear+1;i++){ System.out.printf("arr[%d]=%d ",i,arr[i]); } } //显示队列的头数据,不是取出数据 public int headQueue(){ if(isEmpty()){ System.out.println("队列为空"); return 0; } return arr[front+1]; } }
3、环形队列:
//环形队列 class CircleArray { private int maxSize; private int front;//初始值0 private int rear;//初始值0 private int[] arr; public CircleArray(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 data){ if(isFull()){ System.out.println("队列满了,不能加入数据了"); return; } arr[rear] = data; rear =(rear+1)%maxSize; } //获取队列的数据,出队列 public int getQueue(){ if(isEmpty()){ System.out.println("队列为空,不能取数据"); return 0; } int value = arr[front]; front = (front+1)%maxSize; return value; } //显示队列的所有数据 public void shouQueue(){ if(isEmpty()){ System.out.println("队列为空"); return; } for(int i=0;i<arr.length;i++){ System.out.printf("arr[%d]=%d",i%maxSize,arr[i%maxSize]); } } //求出当前队列有效数据的个数 public int size(){ return (rear + maxSize - front) % maxSize; } //显示队列的头数据,不是取出数据 public int headQueue(){ if(isEmpty()){ System.out.println("队列为空"); return 0; } return arr[front]; } }