我尝试使用下面的代码来查找LinkedList中的最后一个第k个元素。为什么它总是返回null
public Node findElem(Node head, int k){
if(k < 1|| k > this.length()){
System.out.println("error");
}
Node p1=head;
Node p2 = head;
for(int i=0;i<k-1;i++) {
p1 = p1.next;
}
while(p1 != null){
p1= p1.next;
p2 = p2.next;
}
return p2;
}发布于 2017-08-13 00:05:01
你想用这些代码做什么?我猜你在试图找到LinkedList中的t个节点,也就是第k个节点?但是在任何方面,你的代码都是完全无用的。应该是这样的:
public Node findElem(Node head, int k) {
if(k < 1 || k > this.length()) {
System.out.println("Error");
return null;
}
Node position = head;
while(k > 0) {
position = position.next;
k--;
}
return position;
}希望这就是你要找的。如果没有,请再问我一次。
发布于 2017-08-12 23:56:55
您只需要一个变量:对列表中第k个元素的引用,在您的代码中是p1。找到该元素,如下所示:
for(int i=0; i<k-1;i++) {
p1 = p1.next;
}然后把它还回去。另外,看一下您之前的if(k<1|| k>this.length()),您会发现排除了一个非零数,因此您应该将for循环中的i初始化为1,因为head将是链表中的第1个节点。
https://stackoverflow.com/questions/45652154
复制相似问题