-4
學習一些鏈接列表並不確定此循環如何與分配一起工作。有人可以向我解釋這個循環如何在函數內工作嗎?
該代碼旨在查找兩個鏈接列表的交集。
ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
ListNode *cur1 = headA, *cur2 = headB;
while(cur1 != cur2){
cur1 = cur1 ? cur1->next : headB;
cur2 = cur2 ? cur2->next : headA;
}
return cur1;
}
我不知道該cur1 = cur1
如何與分配,而不是一個布爾條件進行評估。我明白迭代是如何工作的,但不確定的,爲什麼我不能只是做:
while(cur1 != cur2){
cur1 = cur1->next;
cur2 = cur2->next;
}
return cur1;
有了這個,我敢肯定,我將結束與一個運行時錯誤,但。
「有人可以向我解釋這個if else循環是如何工作的嗎?」 - 代碼中沒有任何'if..else' – artm
'cur1 = cur1'不是它所說的。它說'cur1 =(cur1?cur1-> next:headB);'...換句話說,它會在取消引用前檢查'cur1'是否爲空。在你的第二個'while'循環中,如果'cur1'或'cur2'爲空,你將會崩潰。 – par
這實際上是非常有用的,因爲除非我使用這個,否則我的程序編譯時遇到了問題,謝謝! @par – johnson