数组实现队列:数组长度固定,数组类型随意,我用的int

数组实现队列

package com.gaiwey.algorithm;

/**
 * 用数组实现队列:固定长度的数组,数组类型随意,我用的int实现
 * 难点在于控制入队和出队的索引
 * @author 嚼不烂菠菜
 */
public class MyQueue {

	private int[] arr;// 存放数据的数组
	private int size; // 数组长度
	private int pushindex;// 添加元素的索引位置
	private int pollindex;// 取出元素的索引位置
	private int limit;// 数组长度限制

	public MyQueue(int limit) {
		arr = new int[limit];
		size = 0;
		pushindex = 0;
		pollindex = 0;
		this.limit = limit;
	}

	public void push(int i) {
		// 检查队列满没满
		if (isFull()) {
			throw new RuntimeException("队列已满,无法添加元素啦……");
		}
		arr[pushindex] = i;
		size++;
		pushindex = nextIndex(pushindex);
	}

	public int poll() {
		// 检查队列是否为空
		if (isEmpty()) {
			throw new RuntimeException("队列已空,无法取出元素啦……");
		}
		int i = arr[pollindex];
		size--;
		pollindex = nextIndex(pollindex);
		return i;
	}
	
	/**
	 * 队列是否已空
	 * @return true-空;false-不为空
	 */
	public boolean isEmpty(){
		return size==0?true:false;
	}
	
	/**
	 * 队列是否已满
	 * @return true;false
	 */
	public boolean isFull(){
		return size==limit?true:false;
	}
	
	/**
	 * 获取当前传入索引的下一个位置
	 * @param i 当前索引
	 * @return
	 */
	private int nextIndex(int i){
		return i < arr.length - 1 ? i + 1 : 0;
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值