Короче говоря, я должен создать код, который вставляет, удаляет, ищет и печатает числа в списке пропусков, где первый узел - отрицательная бесконечность, а последний - положительная бесконечность (-inf> (.. .)> инф). Я вызвал свою функцию поиска из функции вставки, чтобы найти место для вставки любых новых узлов (только после того, как третий узел был вставлен), и я инициализирую или ссылаюсь на свои узлы вне основной функции, а не внутри нее (хотя я спорю о том, должен ли я сделать последнее вместо этого). Однако одна из моих функций может зависнуть в al oop.
static Node search(double item, double max) {
Node head2 = head;
head2 = Start(head2, max);
//starts at the first highest node in the skiplist
//{... } //find a specific node in a skiplist
return head2;
}
//find first highest node for the search function
static Node Start(Node head2, double max) {
System.out.println(head.key + " " + head.level);
Node s = new Node();
if (head2.max < max) {
s = Start(head2.next, max);
return s;
}
else if (head2.max >= max && head2.inf == false) {
if (head2.level < head2.max) {
s = Start(head2.up, max);
return s;
}
else if (head2.level == head2.max) {
s = head;
return s;
}
}
return s;
}
Функция запуска вызывается из функции поиска (вызывается в порядке main> double insert> Node search> Node start), и она Предполагается найти первый узел высшего уровня. Как только он это делает, он возвращает этот узел в функцию поиска, чтобы он мог начать свой поиск оттуда. Но когда вызывается, он просто гаснет и ничего не происходит, несмотря на то, что продолжает работать. Когда я вставляю функцию печати, чтобы определить проблему, она просто печатает ключ первого узла и 1-й уровень и оттуда очищается. ОБНОВЛЕНИЕ: я узнал, что функция может найти узел, но не может вернуть его через рекурсию. Я хотел бы найти способ исправить это.