mirror of
https://gitee.com/apaki/unicstl.git
synced 2025-07-03 23:56:54 +08:00
iter的node一定是当前节点,因此cur的前缀就有些多余了
This commit is contained in:
parent
4691b848ef
commit
c70b007386
@ -17,7 +17,7 @@ struct _iterator
|
|||||||
{
|
{
|
||||||
// ---------- private ----------
|
// ---------- private ----------
|
||||||
void* _parent;
|
void* _parent;
|
||||||
void* _cur_node;
|
void* _node;
|
||||||
uint32_t _index;
|
uint32_t _index;
|
||||||
|
|
||||||
uint32_t _order;
|
uint32_t _order;
|
||||||
|
10
src/deque.c
10
src/deque.c
@ -305,11 +305,11 @@ iterator_t deque_iter(struct _deque* self, enum _deque_order order)
|
|||||||
iter->_order = order;
|
iter->_order = order;
|
||||||
if(iter->_order == DEQUE_FORWARD)
|
if(iter->_order == DEQUE_FORWARD)
|
||||||
{
|
{
|
||||||
iter->_cur_node = self->_head;
|
iter->_node = self->_head;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
iter->_cur_node = self->_tail;
|
iter->_node = self->_tail;
|
||||||
}
|
}
|
||||||
return iter;
|
return iter;
|
||||||
}
|
}
|
||||||
@ -335,7 +335,7 @@ const void* deque_iter_next(struct _iterator* iter)
|
|||||||
deque_t self = (deque_t)iter->_parent;
|
deque_t self = (deque_t)iter->_parent;
|
||||||
void *obj = NULL;
|
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)
|
if(cur_node == NULL)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
@ -344,11 +344,11 @@ const void* deque_iter_next(struct _iterator* iter)
|
|||||||
obj = cur_node->obj;
|
obj = cur_node->obj;
|
||||||
if(iter->_order == DEQUE_FORWARD)
|
if(iter->_order == DEQUE_FORWARD)
|
||||||
{
|
{
|
||||||
iter->_cur_node = cur_node->next;
|
iter->_node = cur_node->next;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
iter->_cur_node = cur_node->prev;
|
iter->_node = cur_node->prev;
|
||||||
}
|
}
|
||||||
|
|
||||||
iter->_index += 1;
|
iter->_index += 1;
|
||||||
|
15
src/graph.c
15
src/graph.c
@ -829,14 +829,14 @@ iterator_t graph_iter(struct _graph *self, enum _graph_search search_type, void
|
|||||||
|
|
||||||
iter->_parent = self;
|
iter->_parent = self;
|
||||||
iter->_index = 0;
|
iter->_index = 0;
|
||||||
iter->_cur_node = self->_head->next;
|
iter->_node = self->_head->next;
|
||||||
|
|
||||||
struct _graph_node *start_node = find_node(self, start);
|
struct _graph_node *start_node = find_node(self, start);
|
||||||
if (start_node == NULL)
|
if (start_node == NULL)
|
||||||
{
|
{
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
iter->_cur_node = start_node;
|
iter->_node = start_node;
|
||||||
|
|
||||||
struct _graph_node *node = self->_head->next;
|
struct _graph_node *node = self->_head->next;
|
||||||
while (node != NULL)
|
while (node != NULL)
|
||||||
@ -850,7 +850,7 @@ iterator_t graph_iter(struct _graph *self, enum _graph_search search_type, void
|
|||||||
{
|
{
|
||||||
case GRAPH_BFS:
|
case GRAPH_BFS:
|
||||||
{
|
{
|
||||||
self->queue->push(self->queue, &iter->_cur_node);
|
self->queue->push(self->queue, &iter->_node);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case GRAPH_DFS:
|
case GRAPH_DFS:
|
||||||
@ -893,7 +893,7 @@ const void *graph_iter_next(struct _iterator *iter)
|
|||||||
{
|
{
|
||||||
case GRAPH_BFS:
|
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_edge *cur_edge = cur_node->edgehead;
|
||||||
struct _graph_node *target = NULL;
|
struct _graph_node *target = NULL;
|
||||||
struct _graph_node *node = cur_node;
|
struct _graph_node *node = cur_node;
|
||||||
@ -932,14 +932,13 @@ const void *graph_iter_next(struct _iterator *iter)
|
|||||||
cur_node = node;
|
cur_node = node;
|
||||||
}
|
}
|
||||||
|
|
||||||
iter->_cur_node = cur_node;
|
iter->_node = cur_node;
|
||||||
obj = cur_node->obj;
|
obj = cur_node->obj;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case GRAPH_DFS:
|
case GRAPH_DFS:
|
||||||
{
|
{
|
||||||
// self->stack->push(self->stack, iter->_cur_node);
|
struct _graph_node *cur_node = iter->_node;
|
||||||
struct _graph_node *cur_node = self->_iter._cur_node;
|
|
||||||
struct _graph_node *node = NULL;
|
struct _graph_node *node = NULL;
|
||||||
|
|
||||||
stack_t stack = self->stack;
|
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;
|
obj = node->obj;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -257,7 +257,7 @@ iterator_t heap_iter(struct _heap* self)
|
|||||||
|
|
||||||
iter->_parent = self;
|
iter->_parent = self;
|
||||||
iter->_index = 0;
|
iter->_index = 0;
|
||||||
iter->_cur_node = self->obj;
|
iter->_node = self->obj;
|
||||||
return iter;
|
return iter;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -313,7 +313,7 @@ static iterator_t queue_iter(struct _queue* self)
|
|||||||
|
|
||||||
iter->_parent = self;
|
iter->_parent = self;
|
||||||
iter->_index = 0;
|
iter->_index = 0;
|
||||||
iter->_cur_node = self->_front;
|
iter->_node = self->_front;
|
||||||
return iter;
|
return iter;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -339,11 +339,11 @@ static const void* queue_iter_next(struct _iterator* iter)
|
|||||||
void *obj = NULL;
|
void *obj = NULL;
|
||||||
|
|
||||||
// base on linklist
|
// 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)
|
if(node != NULL)
|
||||||
{
|
{
|
||||||
obj = node->obj;
|
obj = node->obj;
|
||||||
iter->_cur_node = node->next;
|
iter->_node = node->next;
|
||||||
}
|
}
|
||||||
iter->_index += 1;
|
iter->_index += 1;
|
||||||
return obj;
|
return obj;
|
||||||
|
@ -273,11 +273,11 @@ const void* stack_iter_next(struct _iterator* iter)
|
|||||||
if(self->_head->obj == NULL)
|
if(self->_head->obj == NULL)
|
||||||
{
|
{
|
||||||
// base on linklist
|
// 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)
|
if(node != NULL)
|
||||||
{
|
{
|
||||||
obj = node->obj;
|
obj = node->obj;
|
||||||
self->_iter._cur_node = node->next;
|
iter->_node = node->next;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -311,7 +311,7 @@ iterator_t stack_iter(struct _stack* self)
|
|||||||
|
|
||||||
iter->_parent = self;
|
iter->_parent = self;
|
||||||
iter->_index = 0;
|
iter->_index = 0;
|
||||||
iter->_cur_node = self->_head->next;
|
iter->_node = self->_head->next;
|
||||||
return iter;
|
return iter;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1158,7 +1158,7 @@ static iterator_t tree_iter(struct _tree* self, enum _tree_order order)
|
|||||||
|
|
||||||
iter->_parent = self;
|
iter->_parent = self;
|
||||||
iter->_index = 0;
|
iter->_index = 0;
|
||||||
iter->_cur_node = self->_root;
|
iter->_node = self->_root;
|
||||||
|
|
||||||
iter->_order = order;
|
iter->_order = order;
|
||||||
self->stack->clear(self->stack);
|
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;
|
tree_t self = (tree_t)iter->_parent;
|
||||||
void *obj = NULL;
|
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;
|
struct _tree_node* target_node = NULL;
|
||||||
switch (iter->_order)
|
switch (iter->_order)
|
||||||
{
|
{
|
||||||
@ -1392,7 +1392,7 @@ static const void* tree_iter_next(struct _iterator* iter)
|
|||||||
}break;
|
}break;
|
||||||
}
|
}
|
||||||
|
|
||||||
self->_iter._cur_node = cur_node;
|
iter->_node = cur_node;
|
||||||
obj = target_node->obj;
|
obj = target_node->obj;
|
||||||
iter->_index += 1;
|
iter->_index += 1;
|
||||||
return obj;
|
return obj;
|
||||||
|
Loading…
Reference in New Issue
Block a user