-4
一部のリンクされたリストを勉強していて、このループがどのように割り当てで動作するかは不明です。誰かがこのループがどのように機能内でしか機能するのかを私に説明することはできますか?
このコードは、2つのリンクされたリストの共通部分を見つけることを目的としています。
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;
を:私はどのように反復動作しますが、私はちょうど行うことができない理由がわからない理解しています。
「誰かがこのelse if loopの仕組みを説明できますか?」 - あなたのコードに 'if..else'はありません – artm
' cur1 = cur1'はそれが言うものではありません。 'cur1 =(cur1?cur1-> next:headB);' ...つまり、逆参照する前に 'cur1'がヌルかどうかをチェックします。 2番目の 'while'ループで、' cur1'または 'cur2'がnullの場合はクラッシュします。 – par
ああこれは実際には本当に役に立ちます。なぜなら私がこれを使わなければ、私のプログラムをコンパイルするのに問題があったからです! @par – johnson