마냥 따라만 하고 있는 학생인데 좀 도와주세요.. 메인에 에러가 가득한데 방법을 모르겠습니다. 메인 내부 수정없이 구현가능한 방법 알려주시면 감사해요ㅜㅜ 아 그리고 쉽게 설명 부탁드려요ㅜㅜ
*뒤에서 k번째 노드 찾기
class LinkedList {
Node header;
static class Node {
int data;
Node next = null;
}
LinkedList() {
header = new Node();
}
void append(int d) {
Node end = new Node();
end.data = d;
Node n = header;
while(n.next != null) {
n = n.next;
}
n.next = end;
}
void delete(int d) {
Node n = header;
while(n.next != null) {
if(n.next.data == d) {
n.next = n.next.next;
} else {
n = n.next;
}
}
}
void retrieve() {
Node n = header.next;
while(n.next != null) {
System.out.print(n.data + "->");
n = n.next;
}
System.out.print(n.data);
}
void removeDups() {
Node n = header;
while(n.next != null) {
Node r = n;
while(r.next != null) {
if(n.data == r.next.data) {
r.next = r.next.next;
} else {
r = r.next;
}
}
n = n.next;
}
}
}
public class RemoveDupsEx01 {
public static void main(String[] args) {
LinkedList ll = new LinkedList();
ll.append(1);
ll.append(2);
ll.append(3);
ll.retrieve();
int k = 2;
Reference r = new Reference();
Node found = KthToLast(ll.getFirst(), k, r);
System.out.println(found.data);
}
class Reference {
public int count = 0;
}
private static int KthToLast(Node n, int k, Reference r) {
if(n == null) {
return null;
}
Node found = KthToLast(n.next, k, r);
r.count++;
if(r.count == k) {
return n;
}
return found;
}
}