단일 값으로 연결된 목록에서 대상 값과 동일한 인스턴스를 모두 제거하는 재귀 적 메서드를 정의하려고합니다. 나는 remove 메소드와 함께 removeAux 메소드를 정의했다. 헤드를 제거해야 할 경우 헤드를 재 할당 할 수 있도록 어떻게 변경할 수 있습니까?연결된 목록 재귀 removeAll 메서드
public class LinkedList<T extends Comparable<T>> {
private class Node {
private T data;
private Node next;
private Node(T data) {
this.data = data;
next = null;
}
}
private Node head;
public LinkedList() {
head = null;
}
public void remove(T target) {
if (head == null) {
return;
}
while (target.compareTo(head.data) == 0) {
head = head.next;
}
removeAux(target, head, null);
}
public void removeAux(T target, Node current, Node previous) {
if (target.compareTo(current.data) == 0) {
if (previous == null) {
head = current.next;
} else {
previous.next = current.next;
}
current = current.next;
removeAux(target, current, previous); // previous doesn't change
} else {
removeAux(target, current.next, current);
}
}
이것은 데이터 구조와 알고리즘의 실제 불일치입니다. 목록은 _linear_이며 목록에 재귀를 사용하는 데 별다른 의미가 없습니다. 그것이 _ 트리 _이면, 재귀가 적절할 것입니다. –
시간이 있다면 제 솔루션을보십시오 –