Возврат к поиску в связанном списке

#java #linked-list

#java #связанный список

Вопрос:

Я пытаюсь заставить свою функцию searchReturn работать, но, похоже, не могу ее получить. Кроме того, в нем говорится, что я должен вызвать свой текущий где-то в другом месте, но я не уверен, как еще это сделать, поэтому я указал его как private Node current; в начале моего кода. У меня также возникают проблемы при попытке увеличить i, чтобы при достижении любого числа в моем тестовом файле возвращался этот узел.

Вот моя функция возврата поиска:

 public class List {
 private Node head;
 private int length;
 private Node current;

//Making the LinkedList, with the head as a new Node
//and the size of the list set to 0
public List(){
    length = 0;
}

public boolean isEmptyList(){
    if (length == 0){
        return true;
    }
    else{
        return false;
    }
}

//SearchReturn(L, key): returns a pointer to the Node to the index
public Node searchReturn(int key) {
    Node current = head;
    while(current != null) {
        key  ;
    }
    return current;
}
  

Комментарии:

1. ваш цикл while выглядит как приятель с бесконечным циклом… вы вообще не меняете текущее значение… вы просто увеличиваете значения ключа. Для проверки вставьте System.out.println для печати текущего содержимого узла.. и вы поймете, о чем я говорю

2. @ShreyasSarvothama, я тоже об этом думал, вот почему у меня это было раньше: public Node searchReturn(int key) { Node current = head; while(int i < key; i ) { current = current.getNext(); } return current; но это тоже работало не слишком хорошо

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

Ответ №1:

Вам нужно продвинуть узел к следующему key раз:

 public Node searchReturn(int key) {
    Node retVal = head;
    int i = 0;
    while(i < key) {
        if (retVal == null) {
            return null;
        }
        retVal = retVal.next();
        i  ;
    }
    return retVal;
}
  

Комментарии:

1. Извините, но что такое retVal?

2. @Jim локальная переменная, используемая для хранения значения , которое вы хотите вернуть в урну. Это определено в первой строке метода.

3. Я продолжаю получать эту ошибку, когда пытаюсь запустить свой тестовый файл в моей программе: исключение в потоке «main» java.lang. Исключение NullPointerException Есть идеи, почему он все еще говорит NullPointer даже после того, как я отредактировал searchReturn?

4. @Jim пожалуйста, поделитесь своим тестом и трассировкой стека.

5. это немного длинновато для теста, поэтому вот тестовая ссылка pastebin.com/rErheKYf , и это весь мой код linkedlist code, у меня также есть node one, но это не должно мешать этому: pastebin.com/c1QCtvEz