Я пытаюсь понять алгоритм 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.
Задача ещё не решена.
Других решений пока нет …