Учитывая строку для поиска, я хочу написать рекурсивную функцию, которая принимает только один параметр (строка для поиска). Функция будет искать значение рекурсивно, и если оно будет найдено, оно удалит элемент и вернет его. Если он не будет найден, функция достигнет конца списка и вернет значение null. То, что я до сих пор я думаю, что это правильная идея кроме него не функционирует должным образом:Рекурсивно найти и удалить узел из LinkedList
Main Test Class
public static void main(String[] args) {
RecLinkedList list = new RecLinkedList();
list.add("A");
list.add("B");
list.add("D");
list.add("C", 2);
list.add("E", 4);
list.add("G", 6); //this should be invalid
System.out.println(list);
System.out.println(list.remove(1).getValue());
System.out.println(list.remove("D").getValue());
System.out.println(list.remove("G").getValue());
System.out.println(list.size());
System.out.println(list);
}
Связанный список классов (отображены только то, что мне нужна помощь)
public class RecLinkedList {
private Node first;
private int size = 0;
public RecLinkedList(){
first = null;
}
public boolean isEmpty() {
return first == null;
}
public Node remove(String s){
return remove(s, 0, first);
}
private Node remove(String s, int count, Node list){
if(list == null){
return null;
}else if(s.equals(s)){
first = list.getNext();
return list;
}else if(s.equals(count+1)){
Node n = list.getNext();
if(list.getNext() != null){
list.setNext(list.getNext().getNext());
}
return n;
}else{
return remove(s, count+1, list.getNext());
}
}
До сих пор я могу удалить элемент, но на данный момент элемент «А» удаляется, когда этого не должно быть. Окончательный список должен быть A, C, E. (G должен возвращать и печатать null, потому что он не существует). Я думаю, что я рядом, но что-то второстепенное, но я не могу понять это.
'} еще если (s.equals (s)) {' это кажется подозрительным мне. Он всегда будет «true», а следующий 'else if (...)' никогда не будет выполнен. Также '} else if (s.equals (count + 1)) {', вероятно, не то, что вы хотите. Вы сравниваете индекс (исправьте меня, если я ошибаюсь) со строкой для поиска. – Turing85