Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java优先级队列的实现 公共类优先队列{ 私有优先节点头、尾; 私有内部网络; 公共优先级队列(){ numItems=0; head=null; tail=null; } 公共无效添加(整数优先级,T值){ PriorityNode newNode=新的PriorityNode(优先级,值); 如果(numItems==0){ 头=新节点; tail=newNode; } 否则{ head.setNext(newNode); 头=新节点; } } }_Java_Priority Queue_Comparator - Fatal编程技术网

Java优先级队列的实现 公共类优先队列{ 私有优先节点头、尾; 私有内部网络; 公共优先级队列(){ numItems=0; head=null; tail=null; } 公共无效添加(整数优先级,T值){ PriorityNode newNode=新的PriorityNode(优先级,值); 如果(numItems==0){ 头=新节点; tail=newNode; } 否则{ head.setNext(newNode); 头=新节点; } } }

Java优先级队列的实现 公共类优先队列{ 私有优先节点头、尾; 私有内部网络; 公共优先级队列(){ numItems=0; head=null; tail=null; } 公共无效添加(整数优先级,T值){ PriorityNode newNode=新的PriorityNode(优先级,值); 如果(numItems==0){ 头=新节点; tail=newNode; } 否则{ head.setNext(newNode); 头=新节点; } } },java,priority-queue,comparator,Java,Priority Queue,Comparator,其中PriorityNode定义为: public class PriorityQueue<T> { private PriorityNode<T> head, tail; private int numItems; public PriorityQueue(){ numItems = 0; head=null; tail=null; } public void add(int priority, T value){ Priorit

其中PriorityNode定义为:

public class PriorityQueue<T> {
 private PriorityNode<T> head, tail;
 private int numItems;

 public PriorityQueue(){
  numItems = 0;
  head=null;
  tail=null;
 }


 public void add(int priority, T value){
      PriorityNode<T> newNode = new PriorityNode<T>(priority,value);

      if(numItems == 0){
       head = newNode;
       tail = newNode;
      }
      else{
       head.setNext(newNode);
       head = newNode;
      }



     }

    }
public类优先级节点实现可比较{
私人T值;
私有优先节点下一步;
私人优先权;
公共优先级节点(int优先级,T新值){
值=新值;
next=null;
优先级=0;
}
公共优先级节点(T newValue){
值=新值;
next=null;
优先级=0;
}
公共无效设置优先级(整数优先级){
优先权=优先权;
}
public int getPriority(){
返回此项。优先级;
}
公共T getValue(){
返回值;
}
公共优先级节点getNext(){
下一步返回;
}
public void setNext(PriorityNode nextNode){
this.next=nextNode;
}
公共无效设置值(T newValue){
值=新值;
}
@凌驾
公共整数比较(整数优先){
//TODO自动生成的方法存根

if(this.priority不要使用树结构来实现优先级队列。使用a。它更节省空间,需要更少的内存分配,并且对于大多数操作都是O(log(N))。

关于比较器的实现,实现or接口需要
公共int compareTo(to)
要重写的方法


在给出的示例代码中,
compareTo(T)
方法未被重写(定义了
compareTo(int)
方法,但这不是相同的方法签名),因此,它可能会导致编译器错误。

我认为这对您自己来说太难了,基于数组的堆可以有效地实现优先级队列:更简单、更高效(读取:连续内存区域).

没错,但我正试图在考官向我提出这个问题之前完成这种类型的实施。你的问题不完全清楚。什么是“困难”?编译错误?意外结果?链接是关于什么的?!
 public class PriorityNode<T> implements Comparable<T> {
     private T value;
     private PriorityNode<T> next;
     private int priority;

     public PriorityNode(int priority,T newValue){
      value = newValue;
      next = null;
      priority = 0;
     }

     public PriorityNode(T newValue){
      value = newValue;
      next = null;
      priority = 0;
     }

     public void setPriority(int priority){
      this.priority = priority;
     }

     public int getPriority(){
      return this.priority;
     }

     public T getValue(){
      return value;
     }

     public PriorityNode<T> getNext(){
      return next;
     }

     public void setNext(PriorityNode<T> nextNode){
      this.next = nextNode;
     }

     public void setValue(T newValue){
      value = newValue;
     }

           @Override
     public int compareTo(int pri) {
      // TODO Auto-generated method stub
        if(this.priority<pri){
           return -1;
        }
        else if(this.priority == pri){
           return 0;
         }
        else{
           return 1;
         }


     }


    }