rinetd Eclipse Hibernate 阿里云 JS EasyCVR mongoose swagger ip mui vue插件库 软件测试项目实战案例 python转16进制 datetimepicker赋值 python中的index input函数python python打开文件 python中文教程 java包 java使用mysql java怎么学 java文件读取 java常用数据结构 高效能人士的七个习惯下载 右键菜单背景 怪物猎人ol捏脸数据 3dmax插件神器 微信彩色字 摩尔斯电码翻译器在线 数组删除指定元素 cad视口旋转 挑战程序设计竞赛 asp编程 马颂德 ps平面广告设计教程 桌面系统 js压缩图片 数据库密码忘了怎么办 sd卡格式化 636
当前位置: 首页 > 学习教程  > 编程语言

数组实现队列

2020/7/24 11:34:30 文章标签: 测试文章如有侵权请发送至邮箱809451989@qq.com投诉后文章立即删除

数组实现队列

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;
	}
}


本文链接: http://www.dtmao.cc/news_show_50425.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?