首页 > 代码库 > 数据结构Java实现——队列的“奇葩”二 优先级队列
数据结构Java实现——队列的“奇葩”二 优先级队列
写在前面
有很多时候,一些数据的存储不仅需要先进先出,而且还有根据数据的优先级来排序,也就是优先级高的一定先出去,优先级相同的先进先出,此时就会用到优先级队列
应用
其实优先级队列的应用十分广泛,比如说构造哈夫曼树算法,再比如在一些计算机操作系统中用优先级队列来来满足抢先式多任务操作系统等等等等
代码实现
1、优先级队列存储的数据元素的描述package org.Stone6762.entity; /** * @ClassName_PriorityQData优先级队列的结点中的数据部分的描述 * @author_Stone6762 * @CreationTime_2015年1月2日 下午3:39:55 * @Description_ */ public class PriorityQData { /**@data该节点的数据部分 */ private Object data; /**@priority该结点的优先级 */ private int priority; /** @Title构造器 */ public PriorityQData(Object data, int priority) { super(); this.data = http://www.mamicode.com/data;>2、优先级队列的实现package org.Stone6762.MQueue.imple; import org.Stone6762.MQueue.MQueue; import org.Stone6762.entity.Node; import org.Stone6762.entity.PriorityQData; /** * @ClassName_PriorityQueue优先级队列 * @author_Stone6762 * @CreationTime_2015年1月2日 下午3:42:55 * @Description_ */ public class PriorityQueue implements MQueue { /** * @front指向队首元素 */ private Node front; /** * @rear指向队尾元素 */ private Node rear; /** * @bigFront优先级队列的存储顺序_默认的是队首小 */ private boolean bigFront; /** * @Title构造器 */ public PriorityQueue(boolean bigFront) { this(); this.bigFront = bigFront; } public PriorityQueue() { this.front = this.rear = null; } @Override public void clear() { this.front = this.rear = null; } @Override public boolean isEmpty() { return this.front == null; } @Override public int length() { Node t = this.front; int length = 0; while (t != null) { length++; t = t.getNext(); } return length; } @Override public Object peek() { if (front != null) { return front.getData(); } return null; } @Override public void offer(Object data) throws Exception { PriorityQData tData = http://www.mamicode.com/(PriorityQData) data;>
数据结构Java实现——队列的“奇葩”二 优先级队列
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。