Как сделать потолок в связанном списке?

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

public class LinkedListST<Key extends Comparable<Key>, Value> {
    private Node first; 

    // a helper linked list data type
    private class Node {
        private Key key;
        private Value val;
        private Node next;

    public Node(Key key, Value val, Node next)  {
        this.key  = key;
        this.val  = val;
        this.next = next;
    }
}

 public Key ceiling (Key key) {
    Key ceiling = null;
    for(Node x = first; x != null; x = x.next){
        if(first.key.compareTo(ceiling) > 0)
            ceiling = key; 
    }
    return null; //TODO
}

1 ответ

Создайте статическую переменную в вашем Node учебный класс:

private static Key CEILING = null;

А затем в вашем конструкторе, сравните каждый недавно добавленный Key с CEILING:

if(key > CEILING)  // Just algorithm. Use compareTo() method in your case.
    CEILING = key  

Таким образом, в конце заполнения вашего LinkedList у вас будет key с самым высоким значением.

ИЛИ ЖЕ:

if(key < CEILING)
    CEILING = key // for smallest key
Другие вопросы по тегам