我对自己的代码有疑问。 当我编译下面的代码时,它不起作用,并且会出错。
LinkedListIndex2.java:62:错误:类型不兼容:LinkedList2.Node无法转换为Node 找到的节点= KthToLast(ll.getFirst(),k); ^ 注意:一些消息已简化。用-Xdiags:verbose重新编译以获取完整输出 1个错误
我找不到解决此错误的方法。请给我说明如何修改代码及其原因!。
谢谢!
class LinkedList2{
Node header;
static class Node{
int data;
Node next = null;
}
LinkedList2(){
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.println(n.data);
}
Node getFirst() {
return header.next;
}
}
public class LinkedListIndex2{
public static void main (String[] args){
LinkedList2 ll = new LinkedList2();
ll.append(1);
ll.append(2);
ll.append(3);
ll.append(4);
ll.retrieve();
ll.delete(1);
ll.retrieve();
int k =2;
Node found = KthToLast(ll.getFirst(), k);
System.out.println(found.data);
}
private static Node KthToLast(Node first, int k) {
Node p1 = first;
Node p2 = first;
for(int i =0; i < k; i++){
if(p1 == null) return null;
p1 = p1.next;
}
while ( p1 != null){
p1 = p1.next;
p2 = p2.next;
}
return p2;
}
}