Как сделать потолок в связанном списке?
Я не могу понять, как вернуть наименьший ключ в таблице символов, который больше или равен ключу... если кто-то может указать мне правильное направление, это было бы здорово, потому что я не знаю, с чего начать
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