У меня возникли небольшие трудности с концепцией Recursive.Удаление коэффициентов из LinkedList рекурсивно с использованием индекса
Учитывая LinkedList с целочисленными значениями
L1 = (2->1->4->6->3)
L2= (1->9->6->3)
Функция должны удалить нечетное число из LinkedList, начиная с целым числом N и возвращает ссылку на новую голову
т.е.
L1.deleteOdd(2) = > (2->4->6)
L2.deleteOdd(1) = > (6)
Я реализовал нормальную итеративную функцию, которая выполняет эту работу, вот она
public node deleteOdd(int n) {
node head = this.head;
if (head == null)
return head;
while (head != null) {
if (head.data == n) {
node head2 = head;
while (head2.next != null) {
if (head2.next.data % 2 != 0) {
head2.next = head2.next.next;
} else {
head2 = head2.next;
}
}
if (head.data % 2 != 0) {
return head.next;
}
return head;
}
head = head.next;
}
return head;
}
Теперь я пытаюсь сделать рекурсивную функцию, я пытался что-то сделать, но похоже, что я чего-то не хватает.
Моя рекурсивная функция
public node DeleteOddR(int n) {
node head = this.head;
if (head == null)
return head;
if (head != null) {
if (head.data == n) {
node head2 = head;
if (head2.next.data % 2 != 0)
{
head2.next = head2.next.next;
} else {
head2 = head2.next;
}
if (head.data % 2 != 0) {
return DeleteOddR(head.next.data);
} else {
head.next = DeleteOddR(head.next.data);
return head;
}
} else {
head = head.next;
}
}
return head;
}
Результаты является
node f = l1.DeleteOddR(2);
display(f); // Gives- >2->3->4->6
Я был бы признателен помогает ..
Это не лучший пример для изучения рекурсивной концепции. Зачем использовать индекс со связанным списком? – passion
Просто знайте, с чего начать. Это не «индекс», это число, где мы ищем его в связанном списке, и как только мы его нашли, мы используем узел, который содержит номер в качестве главы. Забыть обо всех элементах до этого l = (1,2,3,4,5,6,7,8,9,10,11,12) l.removeOdd (6) -> 6-> 8-> 10-> 12 (мой новый список) – Zok