iter的node一定是当前节点,因此cur的前缀就有些多余了

This commit is contained in:
建峰 2025-04-27 12:44:47 +08:00
parent 4691b848ef
commit c70b007386
7 changed files with 23 additions and 24 deletions

View File

@ -17,7 +17,7 @@ struct _iterator
{
// ---------- private ----------
void* _parent;
void* _cur_node;
void* _node;
uint32_t _index;
uint32_t _order;

View File

@ -305,11 +305,11 @@ iterator_t deque_iter(struct _deque* self, enum _deque_order order)
iter->_order = order;
if(iter->_order == DEQUE_FORWARD)
{
iter->_cur_node = self->_head;
iter->_node = self->_head;
}
else
{
iter->_cur_node = self->_tail;
iter->_node = self->_tail;
}
return iter;
}
@ -335,7 +335,7 @@ const void* deque_iter_next(struct _iterator* iter)
deque_t self = (deque_t)iter->_parent;
void *obj = NULL;
struct _deque_node * cur_node = (struct _deque_node *)iter->_cur_node;
struct _deque_node * cur_node = (struct _deque_node *)iter->_node;
if(cur_node == NULL)
{
return NULL;
@ -344,11 +344,11 @@ const void* deque_iter_next(struct _iterator* iter)
obj = cur_node->obj;
if(iter->_order == DEQUE_FORWARD)
{
iter->_cur_node = cur_node->next;
iter->_node = cur_node->next;
}
else
{
iter->_cur_node = cur_node->prev;
iter->_node = cur_node->prev;
}
iter->_index += 1;

View File

@ -829,14 +829,14 @@ iterator_t graph_iter(struct _graph *self, enum _graph_search search_type, void
iter->_parent = self;
iter->_index = 0;
iter->_cur_node = self->_head->next;
iter->_node = self->_head->next;
struct _graph_node *start_node = find_node(self, start);
if (start_node == NULL)
{
goto done;
}
iter->_cur_node = start_node;
iter->_node = start_node;
struct _graph_node *node = self->_head->next;
while (node != NULL)
@ -850,7 +850,7 @@ iterator_t graph_iter(struct _graph *self, enum _graph_search search_type, void
{
case GRAPH_BFS:
{
self->queue->push(self->queue, &iter->_cur_node);
self->queue->push(self->queue, &iter->_node);
}
break;
case GRAPH_DFS:
@ -893,7 +893,7 @@ const void *graph_iter_next(struct _iterator *iter)
{
case GRAPH_BFS:
{
struct _graph_node *cur_node = iter->_cur_node;
struct _graph_node *cur_node = iter->_node;
struct _graph_edge *cur_edge = cur_node->edgehead;
struct _graph_node *target = NULL;
struct _graph_node *node = cur_node;
@ -932,14 +932,13 @@ const void *graph_iter_next(struct _iterator *iter)
cur_node = node;
}
iter->_cur_node = cur_node;
iter->_node = cur_node;
obj = cur_node->obj;
}
break;
case GRAPH_DFS:
{
// self->stack->push(self->stack, iter->_cur_node);
struct _graph_node *cur_node = self->_iter._cur_node;
struct _graph_node *cur_node = iter->_node;
struct _graph_node *node = NULL;
stack_t stack = self->stack;
@ -975,7 +974,7 @@ const void *graph_iter_next(struct _iterator *iter)
}
}
}
iter->_cur_node = cur_node;
iter->_node = cur_node;
obj = node->obj;
}
break;

View File

@ -257,7 +257,7 @@ iterator_t heap_iter(struct _heap* self)
iter->_parent = self;
iter->_index = 0;
iter->_cur_node = self->obj;
iter->_node = self->obj;
return iter;
}

View File

@ -313,7 +313,7 @@ static iterator_t queue_iter(struct _queue* self)
iter->_parent = self;
iter->_index = 0;
iter->_cur_node = self->_front;
iter->_node = self->_front;
return iter;
}
@ -339,11 +339,11 @@ static const void* queue_iter_next(struct _iterator* iter)
void *obj = NULL;
// base on linklist
struct _queue_node * node = (struct _queue_node *)iter->_cur_node;
struct _queue_node * node = (struct _queue_node *)iter->_node;
if(node != NULL)
{
obj = node->obj;
iter->_cur_node = node->next;
iter->_node = node->next;
}
iter->_index += 1;
return obj;

View File

@ -273,11 +273,11 @@ const void* stack_iter_next(struct _iterator* iter)
if(self->_head->obj == NULL)
{
// base on linklist
struct _stack_node* node = (struct _stack_node *)self->_iter._cur_node;
struct _stack_node* node = (struct _stack_node *)iter->_node;
if(node != NULL)
{
obj = node->obj;
self->_iter._cur_node = node->next;
iter->_node = node->next;
}
}
else
@ -311,7 +311,7 @@ iterator_t stack_iter(struct _stack* self)
iter->_parent = self;
iter->_index = 0;
iter->_cur_node = self->_head->next;
iter->_node = self->_head->next;
return iter;
}

View File

@ -1158,7 +1158,7 @@ static iterator_t tree_iter(struct _tree* self, enum _tree_order order)
iter->_parent = self;
iter->_index = 0;
iter->_cur_node = self->_root;
iter->_node = self->_root;
iter->_order = order;
self->stack->clear(self->stack);
@ -1256,7 +1256,7 @@ static const void* tree_iter_next(struct _iterator* iter)
tree_t self = (tree_t)iter->_parent;
void *obj = NULL;
struct _tree_node* cur_node = self->_iter._cur_node;
struct _tree_node* cur_node = iter->_node;
struct _tree_node* target_node = NULL;
switch (iter->_order)
{
@ -1392,7 +1392,7 @@ static const void* tree_iter_next(struct _iterator* iter)
}break;
}
self->_iter._cur_node = cur_node;
iter->_node = cur_node;
obj = target_node->obj;
iter->_index += 1;
return obj;