java:用数组实现队列操作

package javaprogram;

public class Demo {
	public static void main(String[] args) {
		Queue queue = new Queue(3);
		boolean b = queue.isEmpty();
		System.out.println("判空:"+b);
		System.out.println("入队列操作:");
		queue.addQueue(1);
		queue.addQueue(2);
		queue.addQueue(3);
		System.out.println("当前队列的长度:"+queue.getSize());
		System.out.print("查看队内全部元素:");
		queue.getAllQueue();
		System.out.println("判满操作:"+queue.isFull());
		System.out.println("获取头部操作:"+queue.getHead());
		System.out.println("进行出队列操作");
		int n = queue.out();
		System.out.println("出队列的数:"+n);
		System.out.println("查看队内全部元素:");
		queue.getAllQueue();
		System.out.println("当前队列的长度:"+queue.getSize());

	}

public static class Queue{
	private int maxSize = 5; //数组总容量
	private int front;	//队头
	private int rear;	//队尾
	private int[] arr;	//数组
	private int size;	//当前数组的长度
	
	//构造器
	public Queue(int maxSize){
		this.maxSize = maxSize;
		arr = new int[maxSize];
		front = -1;
		rear = -1;
		size = 0;
	}
	//判空
	public boolean isEmpty(){
		return front == rear;
	}
	
	//判满
	public boolean isFull(){
		return rear == maxSize - 1;
	}
	//入队列
	public void addQueue(int n){
		if(isFull()){
			throw new RuntimeException("队列满了,不能进行入队列操作~~~");
		}
		rear++;
		size++;
		arr[rear] = n;
	}
	//出队列
	public int out(){
		if(isEmpty()){
			throw new RuntimeException("队列为空,不能进行出队列操作~~~");
		}
		front++;
		size--;
		return arr[front];
	}
	//显示队列中的所有的数据
	public void getAllQueue(){
		if(isEmpty()){
			System.out.println("队列为空~~~");
			return;
		}
		//起始位置front+1,总长度是arr.length
		for(int i = front+1; i < arr.length;i++){
			System.out.print(arr[i]+" ");
		}
		System.out.println();
	}
	//获取队列的头数据
	public int getHead(){
		if(isEmpty()){
			throw new RuntimeException("队列为空,不能进行此操作~~~");
		}
		return arr[front+1];
	}
	//获取队列的当前存储长度
	public int getSize(){
		return size;
	}
}


}

效果

在这里插入图片描述
踩坑:
输出队列内的元素时,起始位置时front+1,终止位置arr.length

for(int i = front+1; i < arr.length;i++){
			System.out.print(arr[i]+" ");
		}

调了半天的bug

发布了86 篇原创文章 · 获赞 5 · 访问量 8908

猜你喜欢

转载自blog.csdn.net/qq_35367566/article/details/103459265