营业执照年检,品牌网站如何做seo,wordpress主题结构图,怎么注册国外网站优先级队列优先级结点类优先级队列接口优先级队列具体实现测试优先级结点类
package com.lovely.queue;public class PriorityNode {/*** author echo lovely* 2020年6月7日下午8:52:08* 优先级结点类*/public Object data; // 结点数据域public int priority; // 结点的优先级…
优先级队列优先级结点类优先级队列接口优先级队列具体实现测试优先级结点类
package com.lovely.queue;public class PriorityNode {/*** author echo lovely* 2020年6月7日下午8:52:08* 优先级结点类*/public Object data; // 结点数据域public int priority; // 结点的优先级public PriorityNode next;public PriorityNode(Object x, int priority) {this.data x;this.priority priority;}}
优先级队列接口
package com.lovely.queue;public interface IPriorityQueue {public void clear(); public boolean isEmpty(); public int length(); public Object peek(); // 返回队首元素 public void offer(Object x, int priority) throws Exception; // x按优先级插入队列队尾入队public Object poll(); // 返回队首元素并删除 队首出队public void display(); // 输出队列中所有数据元素}
优先级队列具体实现
package com.lovely.queue;public class PriorityQueue implements IPriorityQueue {/*** author echo lovely* 2020年6月7日下午8:54:53* * 来由* 有些排队等待问题仅按照先来先服务原则不能解决需求还需将任务的重要程度作为排队的依据* * 例如操作系统中的进程调度管理每个进程都有一个优先级值表示进程的紧急调度* 优先级高的进程先执行同级进程按照先进先出原则排队等待* 则操作系统需要使用优先级队列来管理和调度进程。* * 对于此demo * 入队结点有优先级* 优先数越小优先级别越大*/private PriorityNode front; // 队列首结点private PriorityNode rear; // 队列尾结点Overridepublic void clear() {front rear null;}Overridepublic boolean isEmpty() {return front null;}Overridepublic int length() {PriorityNode p front;int length 0;while(p ! null) {p p.next;length ;}return length;}Overridepublic Object peek() {if (isEmpty()) return null;return front.data;}Overridepublic void offer(Object x, int priority) throws Exception {PriorityNode node new PriorityNode(x, priority);if (!isEmpty()) {PriorityNode p front;PriorityNode q front;while (p ! null p.priority node.priority) { // 按优先级寻找元素所在位置q p;p p.next;}if (p null) { // 队尾rear.next node;rear node;} else if (p front) { // 队首node.next front;front node;} else { // 队中q.next node;node.next p;}} else { // 队列为空front rear node;}}Overridepublic Object poll() {if (front null)return null;// 首结点PriorityNode p front;front front.next;if (p rear) rear null;return p.data;}Overridepublic void display() {if (!isEmpty()) {for (PriorityNode p front; p ! null; p p.next) {System.out.print(数据 p.data 优先级 p.priority \n);}System.out.println();} else {System.out.println(此队列为空。);}}}
测试
package com.lovely.queue;public class TestPriorityQueue {public static void main(String[] args) {// 优先级队列testPriorityQueue pq new PriorityQueue();try {// 优先级数越小 优先入队pq.offer(1, 0);pq.offer(hello, 0);pq.offer(2, 9);pq.offer(3, 3);pq.offer(9, 1);} catch (Exception e) {e.printStackTrace();}pq.display();System.out.println(队首 pq.peek());System.out.println(出队 pq.poll());pq.display();}}
so…
数据 1 优先级 0
数据 hello 优先级 0
数据 9 优先级 1
数据 3 优先级 3
数据 2 优先级 9队首 1
出队 1
数据 hello 优先级 0
数据 9 优先级 1
数据 3 优先级 3
数据 2 优先级 9