Предполагается, что мой while(cur!=head)
должен выполнить в node4, так как он запускает в node3, программа выполняет оператор в блоке do
хотя бы один раз, тогда он будет читать на узле4, node4 - тот же самый, что и узел node3.Java do while loop поддерживает цикл, даже если он не соответствует условию
Моя программа должна быть возвращена.
Actual output: 3 3 3 3 4 5 1 2
Expected output: 3 3 3 4 5 1 2 3
Фактический выход правильно, мой ожидается выход wrong.However, я утра просто интересно, когда дворняжка равно головы, которые не могут претендовать на условия while(cur!=head)
, но он может продолжать работать? Зачем?
class LinkedNode
{
int val;
LinkedNode next;
LinkedNode (int x)
{
val = x;
next = null;
}
}
class Solution
{
public static void main(String[] args)
{
LinkedNode node1 = new LinkedNode(1);
LinkedNode node2 = new LinkedNode(2);
LinkedNode node3 = new LinkedNode(3);
LinkedNode node4 = new LinkedNode(3);
LinkedNode node5 = new LinkedNode(3);
LinkedNode node6 = new LinkedNode(3);
LinkedNode node7 = new LinkedNode(4);
LinkedNode node8 = new LinkedNode(5);
node1.next = node2;
node2.next = node3;
node3.next = node4;
node4.next = node5;
node5.next = node6;
node6.next = node7;
node7.next = node8;
node8.next = node1;
LinkedNode after = check(node3);
print_list(after);
}
public static void print_list(LinkedNode head)
{
LinkedNode cur = head;
do
{
System.out.print(head.val + " ");
head = head.next;
}
while (cur!= head);//same question as the below
}
public static LinkedNode check(LinkedNode head)
{
LinkedNode cur = head;
do
{
cur = cur.next;
}
while(cur!=head);// this line is supposed to execute and exit at node4,since node4 is equal to node3(head)
return cur;
}
}
Я не понимаю, что вы пытаетесь сделать. В 'check', метод будет продолжать цикл до тех пор, пока' cur! = Head'. Это означает, что когда он закончит цикл, у вас будет 'cur == head', потому что' cur == head' - единственный раз, когда он выйдет из цикла. Таким образом, в принципе, 'check' всегда будет возвращать' head' (если он не будет бесконечным или циклическим). – ajb
Do While Blindly Executes Code First Time Он не проверяет наличие каких-либо условий –
И можете ли вы сказать мне, почему функция check() используется? –