我正在尝试实现一个布尔方法,使用listnode list的参数,如果list遇到null,那么该方法将返回true。如果节点指向前一个节点,那么它应该返回false。例如,1,2,3,null-->真1,2,3,(指向前一个节点)2,3,2,3,等等。下面的静态方法是我做的,但是当我试图证明该方法是否正确工作时,它不是我想的那样工作。我在下面附上了我的代码。
class ListNode<T> {
public T value;
public ListNode<T> next;
public ListNode(T value, ListNode<T> next)
{
this.value = value;
this.next = next;
}
public ListNode<T> setValue(T value)
{
return new ListNode<T>(value, this);
}
}
class Test
{
公共静态布尔终止(listnode列表){
if(list == null)
{
return true;
}
ListNode slow;
ListNode fast;
slow = list;
fast = list;
while(true)
{
slow = slow.next;
if(fast.next != null)
{
fast = fast.next.next;
}
else
{
return true; // next node is null
}
if(slow == null || fast == null)
{
return true;
}
if(slow == fast)
{
return false;
}
}
public static void main(String [] args)
{
ListNode list3; // header3
ListNode one3 = null;
ListNode two3 = null;
ListNode three3 = new ListNode(3, two3);
one3 = new ListNode(1, two3);
two3 = new ListNode(2, three3);
list3 = one3;
System.out.println(terminates(list3));//IT SHOULD RETURN FALSE, BUT IT DOES NOT
}
1条答案
按热度按时间hrysbysz1#
考虑使用objects.isnull()而不是贯穿整个代码的'==null'。