У меня есть следующее домашнее задание:связанного списка получить метод retrieveAt
Добавить новый метод
retrieveAt
для классаIntSLList
, который принимает позицию индекса целочисленной в качестве параметра.Метод возвращает информацию внутри узла в позиции индекса. Индекс первого узла равен 0. Если список пуст или индекс недопустим, отобразите сообщение об ошибке.
я реализовал решение, используя следующий код:
public int retrieveAt(int pos){
IntSLLNode tmp;
int count = 0;
int c;
for(tmp = head; tmp != null; tmp = tmp.next){
count++;
}
if(isEmpty()|| count<pos){
return 0;
} else {
IntSLLNode tmp1 = head;
for(int i = 1; i < pos; i++){
if(tmp1.next == null)
return 0;
tmp1 = tmp1.next;
}
return tmp1.info;
}
}
Оказывается, для просмотра списка правильно, но не получить правильный элемент.
Пример случай, когда это не представляется дать правильный вывод:
IntSLList myn = new IntSLList();
myn.addToHead(10);
myn.addToHead(20);
myn.addToHead(30);
myn.addToHead(40);
myn.addToTail(60);
myn.printAll();
int x = myn.retrieveAt(4);
if(x == 0)
System.out.println("NOT VALID ");
else
System.out.println("elm : " + x);
Выход есть:
40
30
20
10
60
elm : 10
Просьба сделать я = 0 в вашей второй цикл вместо г = 1 , – Mr37037