博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构——队列——优先级队列
阅读量:5827 次
发布时间:2019-06-18

本文共 2027 字,大约阅读时间需要 6 分钟。

hot3.png

package jxau.lyx.pQueue;/** *  * @author liyixiang * @2014-9-21 * @DataStrutureType: 队列——优先级队列 * @TODO: * 		优先级队列 * 		在优先级队列中,数据按关键字的值有序,这样关键字最小的数据项(或者最大) * 总是在队头 * 		本以为会有一个数据项来表示优先级的大小,其实不用,insert到队列中时,就已经 * 比较后排序! * 		优先级队列不需要front rear 因为front总是nItems-1,rear==0 */public class PriorityQueue {	private int maxSize;                      //队列最大空间	private long[] queueArray;                //队列空间(此处我们申请的是可比较的整数型数组)	private int nItems;                        //队中含有的元素个数		/**	 * 初始化	 * @param s:队空间大小	 */	public PriorityQueue(int s){		maxSize = s;		queueArray = new long[maxSize];		nItems = 0;	}		/**	 * 	 *@liyixiang	 *@2014-9-20	 *@param:obj 入队元素	 *@return:void	 *@TODO:	 *		入队:	 *		先检查队列是否有数据项,如果没有,就插入到下标为0的单元中,否则,从数组	 *顶部开始上移存在的数据项,直到找到新数据项应当插入的位置,然后,插入数据项,	 *并把nItems+1,优先级队列可能出现队满情况,应当在insert之前判断isFull	 *	 */	public void insert(long item){		int j;				if(nItems == 0){			queueArray[nItems++] = item;		}else {			//比较元素大小,使队列中的元素有序			for(j=nItems-1;j>=0;j--){								if(item > queueArray[j]){					queueArray[j+1] = queueArray[j];				}else {					break;				}			}						queueArray[j+1] = item;			nItems++;		}	}		/**	 * 	 *@liyixiang	 *@2014-9-21	 *@param	 *@return:Object:移除元素	 *@TODO:	 *		出队	 *		由于优先级队列,元素有序,所以只有最大或者最小元素出队	 */	public long remove(){		return queueArray[--nItems];	                                                                                                                                   	}							/**	 * 	 *@liyixiang	 *@2014-9-21	 *@param	 *@return:Object	 *@TODO:	 *		获取优先级最小元素	 */	public Object peekMin(){		 return queueArray[nItems-1];	}		/**	 * 	 *@liyixiang	 *@2014-9-21	 *@param	 *@return:boolean	 *@TODO:	 *		判断队列是否为空	 */	public boolean isEmpty(){		return (nItems == 0);	}		/**	 * 	 *@liyixiang	 *@2014-9-21	 *@param	 *@return:boolean	 *@TODO:	 *		判断队列是否为满	 *	 */	public boolean isFull(){		return nItems == maxSize;	}		/**	 * 	 *@liyixiang	 *@2014-9-21	 *@param	 *@return:int	 *@TODO:	 *		获取当前队列元素个数	 */	public int size(){		return nItems;	}}

转载于:https://my.oschina.net/liyixiangBlog/blog/316655

你可能感兴趣的文章
re:Invent解读:没想到你是这样的AWS
查看>>
PyTips 0x02 - Python 中的函数式编程
查看>>
使用《Deep Image Prior》来做图像复原
查看>>
Linux基础命令---rmdir
查看>>
Android图片添加水印图片并把图片保存到文件存储
查看>>
开源 免费 java CMS - FreeCMS1.2-标签 infoSign
查看>>
Squid 反向代理服务器配置
查看>>
Java I/O操作
查看>>
Tomcat性能调优
查看>>
Android自学--一篇文章基本掌握所有的常用View组件
查看>>
灰度图像和彩色图像
查看>>
FreeMarker-Built-ins for strings
查看>>
argparse - 命令行选项与参数解析(转)
查看>>
修改上一篇文章的node.js代码,支持默认页及支持中文
查看>>
spring-boot支持websocket
查看>>
我理想中的前端工作流
查看>>
Chrome 广告屏蔽功能不影响浏览器性能
查看>>
Android状态栏实现沉浸式模式
查看>>
使用Openfiler搭建ISCSI网络存储
查看>>
学生名单
查看>>