Изучение некоторых связанных списков и не уверен, как этот цикл работает с назначением.Может кто-нибудь объяснить мне, как этот цикл работает только внутри функции?
Код предназначен для нахождения пересечения двух связанных списков.
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» значение null перед разыменованием. Во втором цикле 'while', если' cur1' или 'cur2' имеет значение null, вы сработаете. – par
ах это действительно очень полезно, потому что, если я не использовал это, у меня были проблемы с получением моих программ для компиляции спасибо! @par – johnson