Java数据结构与算法——队列

线性结构之一:队列
队列是一个先入先出的有序列表

数组模拟队列

用数组来模拟环形队列
属性:
	队列最大容量 maxSize
	队列头标记:int front
	队列尾标记:int real
	模拟队列的数组:int[] arr

构造器:初始化数组大小

方法;
	判断队列是否空
	判断队列是否满
	添加数据到队列
	从队列获取数据
	显示队列所有数据
	显示队列头的数据(不是获取)
构造器	初始化数组
package queue;

public class MyQueueInt {
	private int maxSize;// 队列最大容量
	private int front;// 队列头
	private int real;// 队列尾
	private int[] arr;// 数组模拟队列

	public MyQueueInt() {
		super();
		// TODO Auto-generated constructor stub
	}

	public MyQueueInt(int maxSize) {
		super();
		this.maxSize = maxSize;
		this.front = 0;
		this.real = 0;
		this.arr = new int[maxSize];
	}

	// 获取队列的长度
	public int getlength() {
		return front - real;
	}

	// 判断队列是否满
	public boolean isFull() {
		return front - real == maxSize;
	}

	// 判断队列是否空
	public boolean isEmpty() {
		if (real == front) {
		//添加元素,头部标记值front的值增加
		//获取元素,尾部标记值real的值增加
//为了避免数值过大可以在队列为空的时候重置两者的数值
			real = front = 0;
			return true;
		}
		return false;

	}

	// 在头部添加元素
	public void add(int i) {
		// 判断是否满
		if (isFull()) {
			System.out.println("队列已经满了!");
			return;
		}

		int temp = front % maxSize;
		arr[temp] = i;
		front++;
	}

	// 在尾部获取元素
	public int get() {
		// 判断是否空
		if (isEmpty()) {
//获取数据后,可能对数据进程操作,此处直接抛出异常作为提示
			throw new RuntimeException("队列已经空了");
		}

		int temp = real % maxSize;
		int num = arr[temp];
		real++;
		System.out.println("取出的值为: " + num);
		return num;

	}

	// 展示头部与尾部数据
	public void gets() {
		System.out.println(front);
		System.out.println(real);
	}

	// 显示队列所有数据
	public void show() {
		if (isEmpty()) {
	//只是数据的展示,不涉及数据后续的操作,直接提示空队列即可
			System.out.println("空队列");
			return;
		}
		for (int i = real; i < front; i++) {
			int temp = i % maxSize;
			System.out.println("temp" + temp);
			System.out.println("arr" + arr[temp]);
		}
	}

	// 展示并返回队列头元素
	public int showhead() {
		return arr[real % maxSize];
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值