mirror of
https://gitee.com/apaki/unicstl.git
synced 2025-05-18 03:51:35 +08:00
遍历中将node重命名为target更容易理解
This commit is contained in:
parent
6054e712e6
commit
7b672b6e77
40
src/tree.c
40
src/tree.c
@ -1256,9 +1256,8 @@ static const void* tree_iter_next(struct _iterator* iter)
|
|||||||
tree_t self = (tree_t)iter->_parent;
|
tree_t self = (tree_t)iter->_parent;
|
||||||
void *obj = NULL;
|
void *obj = NULL;
|
||||||
|
|
||||||
self->_iter._cur += 1;
|
|
||||||
|
|
||||||
struct _tree_node* cur_node = self->_iter._cur_node;
|
struct _tree_node* cur_node = self->_iter._cur_node;
|
||||||
|
struct _tree_node* target_node = NULL;
|
||||||
switch (self->_order)
|
switch (self->_order)
|
||||||
{
|
{
|
||||||
case ORDER_PRE:
|
case ORDER_PRE:
|
||||||
@ -1271,11 +1270,10 @@ static const void* tree_iter_next(struct _iterator* iter)
|
|||||||
{
|
{
|
||||||
if (cur_node != NULL)
|
if (cur_node != NULL)
|
||||||
{
|
{
|
||||||
node = cur_node;
|
target_node = cur_node;
|
||||||
|
|
||||||
self->stack->push(self->stack, &cur_node);
|
self->stack->push(self->stack, &cur_node);
|
||||||
cur_node = cur_node->left;
|
cur_node = cur_node->left;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -1291,11 +1289,10 @@ static const void* tree_iter_next(struct _iterator* iter)
|
|||||||
{
|
{
|
||||||
if (cur_node != NULL)
|
if (cur_node != NULL)
|
||||||
{
|
{
|
||||||
node = cur_node;
|
target_node = cur_node;
|
||||||
|
|
||||||
self->stack->push(self->stack, &cur_node);
|
self->stack->push(self->stack, &cur_node);
|
||||||
cur_node = cur_node->right;
|
cur_node = cur_node->right;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -1305,19 +1302,10 @@ static const void* tree_iter_next(struct _iterator* iter)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (node == NULL)
|
|
||||||
{
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
self->_iter._cur_node = cur_node;
|
|
||||||
obj = node->obj;
|
|
||||||
}break;
|
}break;
|
||||||
case ORDER_IN:
|
case ORDER_IN:
|
||||||
case ORDER_IN_R:
|
case ORDER_IN_R:
|
||||||
{
|
{
|
||||||
struct _tree_node* node = NULL;
|
|
||||||
if (self->_order == ORDER_IN)
|
if (self->_order == ORDER_IN)
|
||||||
{
|
{
|
||||||
while (!self->stack->empty(self->stack) || cur_node != NULL)
|
while (!self->stack->empty(self->stack) || cur_node != NULL)
|
||||||
@ -1330,8 +1318,8 @@ static const void* tree_iter_next(struct _iterator* iter)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
self->stack->pop(self->stack, &cur_node);
|
self->stack->pop(self->stack, &cur_node);
|
||||||
|
target_node = cur_node;
|
||||||
|
|
||||||
node = cur_node;
|
|
||||||
cur_node = cur_node->right;
|
cur_node = cur_node->right;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -1349,20 +1337,13 @@ static const void* tree_iter_next(struct _iterator* iter)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
self->stack->pop(self->stack, &cur_node);
|
self->stack->pop(self->stack, &cur_node);
|
||||||
|
target_node = cur_node;
|
||||||
|
|
||||||
node = cur_node;
|
|
||||||
cur_node = cur_node->left;
|
cur_node = cur_node->left;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (node == NULL)
|
|
||||||
{
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
self->_iter._cur_node = cur_node;
|
|
||||||
obj = node->obj;
|
|
||||||
}break;
|
}break;
|
||||||
case ORDER_POST:
|
case ORDER_POST:
|
||||||
case ORDER_POST_R:
|
case ORDER_POST_R:
|
||||||
@ -1370,9 +1351,7 @@ static const void* tree_iter_next(struct _iterator* iter)
|
|||||||
if (!self->stack->empty(self->stack))
|
if (!self->stack->empty(self->stack))
|
||||||
{
|
{
|
||||||
self->stack->pop(self->stack, &cur_node);
|
self->stack->pop(self->stack, &cur_node);
|
||||||
|
target_node = cur_node;
|
||||||
self->_iter._cur_node = cur_node;
|
|
||||||
obj = cur_node->obj;
|
|
||||||
}
|
}
|
||||||
}break;
|
}break;
|
||||||
case ORDER_BREADTH:
|
case ORDER_BREADTH:
|
||||||
@ -1382,9 +1361,7 @@ static const void* tree_iter_next(struct _iterator* iter)
|
|||||||
if (!queue->empty(queue) && cur_node != NULL)
|
if (!queue->empty(queue) && cur_node != NULL)
|
||||||
{
|
{
|
||||||
queue->pop(queue, &cur_node);
|
queue->pop(queue, &cur_node);
|
||||||
|
target_node = cur_node;
|
||||||
self->_iter._cur_node = cur_node;
|
|
||||||
obj = cur_node->obj;
|
|
||||||
|
|
||||||
if (self->_order == ORDER_BREADTH)
|
if (self->_order == ORDER_BREADTH)
|
||||||
{
|
{
|
||||||
@ -1415,6 +1392,9 @@ static const void* tree_iter_next(struct _iterator* iter)
|
|||||||
}break;
|
}break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
self->_iter._cur_node = cur_node;
|
||||||
|
obj = target_node->obj;
|
||||||
|
self->_iter._cur += 1;
|
||||||
return obj;
|
return obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user