尝试实现具有有序链表的优先级队列



所以我要做的是使用有序链表实现优先级队列。我觉得我相当接近,但我似乎无法解决插入函数中 while 语句中的错误。这是我到目前为止所拥有的:

class OrderedLinkedListMaxPQ<Item> {
private class PQNode {
    Object data; 
    PQNode next;
    public PQNode(Object value) {
        data = value;
        next = null;
    }
}
PQNode head;
public void PriorityQueue() { 
    this.head = null; 
}
public boolean isEmpty() { return this.head == null; }
public void insert(Object item) {
   PQNode prev = null;
   PQNode current = this.head;
   while (current != null && current.data >= item.data) {
       prev = current;
       current = current.next;
   }
   PQNode temp = new PQNode(item);
   if (prev == null) {
       temp.next = this.head;
       this.head = temp;
   } else {
       temp.next = current;
       prev.next = temp;
   }   
}
public Object delete() {
   Object temp = this.head.data;
   this.head = this.head.next;
   return temp;
}
public static void main(String[] args) {
    OrderedLinkedListMaxPQ<Integer> pq = new OrderedLinkedListMaxPQ<Integer>();
    pq.insert(7);
    pq.insert(6);
    pq.insert(3);
    pq.insert(2);
    while (!pq.isEmpty())
        StdOut.println(pq.delete());
   }
}

current.data >= item.data毫无意义。data是对象引用,您无法比较它们。也许,如果 dat a值Comparable您可以使用 compareTo(...) 方法。否则,您将需要编写自己的机制来比较它们。此外,item作为对象传入,但您将其引用为PNode...这也是一个问题。

相关内容

  • 没有找到相关文章

最新更新