完美实现单向队列

it2023-05-16  72

单向队列的数组实现:

定义一个数组,给定数组最大长度,定义队列头指针,尾指针,头指针和尾指针相等则表示队列为空,尾指针与数组最大长度相等则表示队列已满

代码表示为:

package 数据结构; import java.util.Random; /** * 使用数组模拟队列 */ public class 队列 { public static void main(String[] args) { ArrQueue arrQueue1=new ArrQueue(10); for(int i=0;i<11;i++) { arrQueue1.add(10); System.out.println("-----------------------------------"); System.out.println("头指针指向:"+arrQueue1.getFront()); System.out.println("尾指针指向"+arrQueue1.getRear()); } for(int i=0;i<11;i++) { arrQueue1.get(); System.out.println("-----------------------------------"); System.out.println("头指针指向:"+arrQueue1.getFront()); System.out.println("尾指针指向"+arrQueue1.getRear()); } arrQueue1.showqueue(); } } class ArrQueue{ /** * maxsize:数组最大容量 * front:队列头指针 * rear:队列尾指针 * arr:队列数组 */ private int maxsize; private int front; private int rear; private int []arr; //getter and setter public int getMaxsize() { return maxsize; } public void setMaxsize(int maxsize) { this.maxsize = maxsize; } public int getFront() { return front; } public void setFront(int front) { this.front = front; } public int getRear() { return rear; } public void setRear(int rear) { this.rear = rear; } public int[] getArr() { return arr; } public void setArr(int[] arr) { this.arr = arr; } public ArrQueue(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 n){ if( isFull()) { System.out.println("数据已满,无法添加"); } else{ //入队,队尾后移 rear++; arr[rear]=n; } } public int get(){ if(isEmpty()) { //会直接导致return throw new RuntimeException("队列中无数据,取出失败"); } else{ //出队,队首后移 front++; return arr[front]; } } public void showqueue(){ if(isEmpty()) { System.out.println("队列为空,没有数据"); } else{ for(int i=0;i<arr.length;i++) { System.out.print(arr[i]+"\t"); } } } }

运行结果图:

最新回复(0)