0

MarchingCube アルゴリズムを理解しようとしています。以前の質問はthisでした。今、私はノード(キューブ全体の各グリッドをリンクリストのような構造で保持する)が挿入される1つの関数で立ち往生しています。コードの最初の数行は理解できますが、コードを見ると、コードの一部が冗長であることがわかります。

NODE *Insert(NODE *listset, NODE *tmpNode) {
1    NODE *temp;
2
3    if(listset == NULL) return tmpNode;
4    else {
5        tmpNode->next = listset->next;
6        listset->next = tmpNode;
7        return listset;
8    }
9    temp = listset;
10    if(temp->next == NULL) {
11       if(temp->depth > tmpNode->depth) temp->next = tmpNode;
12            else {
13                tmpNode->next = temp;
14                listset = tmpNode;
15            }
16         return listset;
17    }
18    while(temp->next != NULL) {
19        if(temp->next->depth > tmpNode->depth) temp = temp->next;
20        else {
21            tmpNode->next = temp->next;
22            temp->next = tmpNode;
23            return listset;
24        }
25     }
26     temp->next = tmpNode;
27     return listset;

}

この関数では、1 から 8 までが完全に理にかなっています (新しいノードを最後に挿入するだけです)。その時点以降にコードがどのように到達する可能性がありますか (9-27 のコードを意味します) ?? それも必要ですか??

パート9-27で何が起こっているのか誰か説明してもらえますか.

4

0 に答える 0