Вставка в приоритетную очередь - PullRequest
0 голосов
/ 10 ноября 2018

Мне было поручено создать приоритетную очередь с нуля без программ расширения.

Основная задача, стоящая перед нами, заключается в создании очереди приоритетов для системы ИТ-билетов, которая позволяет ИТ-специалистам определять приоритеты, какие задачи внутри компании должны быть выполнены в первую очередь. (приоритет = 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 голосов
/ 11 ноября 2018

Поскольку вы не предоставили оставшуюся часть кода для того, что устанавливаете и получаете следующий билет, я не могу сказать точно, но логически в какой-то момент вы пытаетесь получить значение NULL с помощью вашего метода get, который дает ты ошибка. Проверьте все ваши условия правильно и посмотрите, не пытаетесь ли вы получить значение NULL.

Это должно быть главной проблемой и должно исправить ее

...