Как работает функция «Вставить узел» Marching Cube?

Я пытаюсь понять алгоритм MarchingCube:
Мой предыдущий вопрос был этот. Теперь я застрял в одной функции, где вставляется узел (который содержит каждую сетку всего куба в виде структуры связанного списка). Я могу понять первые несколько строк кода, но когда я смотрю на код, я нахожу некоторую часть кода избыточной.

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.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]