插入优先级队列

时间:2018-11-10 18:24:09

标签: java object priority-queue

我被赋予一项任务,无需扩展程序即可从头开始创建优先级队列。

当前的基本任务是为IT票务系统创建优先级队列,该队列使IT工作者可以确定公司中哪些任务必须首先完成。 (优先级= 1->最高优先级,最低4)。

我正在尝试通过单链列表进行操作。

我的问题是,一旦我的insertInQueue(Ticket T)函数获取了最后一个值,它就会失败。

失败返回​​语句为

Exception in thread "main" java.lang.NullPointerException

at Queue.insertInQueue(Queue.java:36) 

(第36行的代码行):

`if( temp.getNextTicket().getPriority() > T.getPriority())

at Main.main(Main.java:21)(进入系统的最后一个对象)

private Ticket head;
private Ticket tail;




public void insertInQueue(Ticket T){ 

    Ticket temp = head;

    if(head == null){       //When no values are in the queue
        head = T;           //head = Ticket
        tail = T;           //tail = Ticket

    }else if(T.getNextTicket() == null){

            tail.setNextTicket(T);
            tail = T;


    }   


    else{
        while( temp != null ){

            if( temp.getNextTicket().getPriority() > T.getPriority()){

                T.setNextTicket(temp.getNextTicket());
                temp.setNextTicket(T);


            }
            temp = temp.getNextTicket();


            }
        }

    }

输入示例:

Ticket T8 = new Ticket(8, "Ben_DG", 4);

我尝试了几种不同的方法,但是什么都没得到。有人可以帮我吗?

如果您需要更多我的代码,请告诉我,我将其发布。 (只是有点担心一些同学会偷走它)

谢谢!

1 个答案:

答案 0 :(得分:0)

由于您尚未提供用于设置和获取下一张票的其余代码,因此我无法确定,但是从逻辑上讲,您尝试使用get方法获取NULL值,你的错误。正确检查所有条件,并查看是否未尝试获取NULL值。

这应该是主要问题并应解决