这是我用来学习Java的书。
LinkedListNode,整数-> LinkedListNode
此函数仅迭代k次链接列表并返回节点。 我的问题如下:将参数从“ head”重命名为“ current”是否有意义?我不能直接工作吗?
LinkedListNode getKthNode(LinkedListNode head, int k) {
LinkedListNode current = head;
while (k > 0 && current != null) {
current = current.next;
k--;
}
return current;
}
答案 0 :(得分:2)
在这种情况下,将head
分配给current
仅出于可读性目的。
如果直接修改head
局部变量而不是使用current
局部变量,则该方法的行为将完全相同。
另一方面,如果未将head
引用传递给该方法(即将从实例变量获取),则需要将其分配给局部变量,以便您的方法是不更改列表的head
。
在这种情况下,LinkedListNode getKthNode(int k)
将是具有LinkedList
实例变量的LinkedListNode head
类的方法。
答案 1 :(得分:0)
是的,如果您不想在方法中修改头部。可以使用相同的头部。
它的行为将相同。即使直接使用head。
答案 2 :(得分:0)
当然,您可以按如下所示重写它并获得相同的结果:
LinkedListNode getKthNode(LinkedListNode head, int k) {
while (k > 0 && head != null) {
head = head.next;
k--;
}
return head;
}
这是我进行的一些测试的示例:
首先创建一个LinkedListNode
类:
private static class LinkedListNode {
public LinkedListNode next;
private int value;
public LinkedListNode(int value) {
this.value = value;
}
public int getValue() {
return value;
}
}
然后我创建了3个LinkedListNode
对象,它们的值分别为100、200、300。
public static void main(String[] args) {
LinkedListNode first = new LinkedListNode(100);
LinkedListNode second = new LinkedListNode(200);
LinkedListNode third = new LinkedListNode(300);
first.next = second;
second.next = third;
third.next = null;
System.out.println(getKthNode(first, 1).getValue()); // 200
}
如果您使用原始功能尝试相同的测试,则会得到相同的答案。这样写是为了表达自己。