Я пытаюсь реализовать логический метод, принимающий параметр из списка ListNode, тогда метод вернет true, если список соответствует нулю.Если узлы указывают на предыдущий узел, он должен вернуть false.Например, 1, 2, 3, null -> true 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
}