我while(cur!=head)
應該在節點4執行的條件,因爲它開始 在節點3,該方案在do
塊執行語句至少一次,那麼它會在節點4讀取, node4與頭節點node3相同。的Java做while循環不斷循環,即使它不符合
我的程序應該返回。
Actual output: 3 3 3 3 4 5 1 2
Expected output: 3 3 3 4 5 1 2 3
實際的輸出是正確的,我的預期成果是wrong.However,我 只是想知道,當CUR等於頭,這不符合資格的 條件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
雖然盲目執行代碼第一次它不檢查任何條件 –
你能告訴我爲什麼使用check()函數嗎? –