私はC ++コードからアルゴリズムを理解しようとしている初心者です。その後、Javaで実装したいのですが、コードを理解するのが難しいことがわかりました。ここで私を混乱させた3つのコード
inline Edge *Node::NextEdge( Edge *prev)
{
for (int i = 0; i < 4; i++)
prev = (Edge *) ( (int) prev ^ (int) edge[i] );
return prev;
}
// _ _ _ _ _ _ _ _ _ _ _ _ __ _ _ __ _ _ _ _ _ _ _ _ __ _ ___ _ _ _ _ _ _ _
if (nextfrag)
{
if ( --nextfrag->degree)
new_frag( nextfrag, fragnum, len, edge );
// _ _ _ _ _ _ _ _ _ _ _ _ _ __ _ _ _ _ _ _ _ _ _ _ _ __ _ _ _ _ _ _
for (pedge = edge; pedge->parent; pedge = pedge->parent);
最初のコードに対する私の質問: ビット単位の Xor 演算で反復がどのように機能するか? とはprev = (Edge *) ( (int) prev ^ (int) edge[i] );
どういう意味ですか? return の値はprev
?
2 番目のコードの質問: 減少演算子if ( --nextfrag->degree)
は if ステートメントでどのように機能しますか?
3番目のコード:forステートメントを書く他の方法はありますか? 初心者として i= 0; を使用するだけなので、 for ステートメントの意味を説明してください。i= 何か; i++
ばかげた質問で申し訳ありませんが、あなたの説明は私を大いに助けてくれます、事前に感謝します:)