Нисходящая вставка узлов связанного списка - PullRequest
0 голосов
/ 07 апреля 2019

У меня есть следующий код для вставки узлов. Тем не менее, он вставляет их в порядке возрастания:

public void add(T item, int priority) throws QueueOverflowException {    
    SortedLinkedListNode<T> current = head;
    SortedLinkedListNode<T> previous = new SortedLinkedListNode<T>(); 
    SortedLinkedListNode<T> newNode = new SortedLinkedListNode<T>(); 
    newNode.priority = priority;
    newNode.data = item; 
    previous =null;

    while (current != null && current.priority <= priority) {
        previous = current;
        current = current.next;
    }

    if (previous == null) {
        newNode.next = current;
        first = newNode;
    } else {
        newNode.next = current;
        previous.next = newNode;
    }
}

Однако мне нужно было бы вставить его в порядке убывания, любые указатели на то, как этого добиться, были бы очень благодарны.

1 Ответ

0 голосов
/ 07 апреля 2019

Вам нужно изменить <= на >=:

public void add(T item, int priority) throws QueueOverflowException {    
    SortedLinkedListNode<T> current = head;
    SortedLinkedListNode<T> previous = new SortedLinkedListNode<T>(); 
    SortedLinkedListNode<T> newNode = new SortedLinkedListNode<T>(); 
    newNode.priority = priority;
    newNode.data = item; 
    previous =null;

    while (current != null && current.priority >= priority) {
        previous = current;
        current = current.next;
    }

    if (previous == null) {
        newNode.next = current;
        first = newNode;
    } else {
        newNode.next = current;
        previous.next = newNode;
    }
}
...