mirror of
https://gitee.com/apaki/unicstl.git
synced 2025-05-18 03:51:35 +08:00
栈的迭代器从栈顶到栈底,另外destory函数私有化
This commit is contained in:
parent
b396d80672
commit
86855420e2
@ -200,7 +200,7 @@ static void demo_stack_struct(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
stack->destory(stack);
|
stack->_destory(stack);
|
||||||
stack_free(&stack);
|
stack_free(&stack);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -31,7 +31,7 @@ struct _stack
|
|||||||
|
|
||||||
struct _iterator _iter;
|
struct _iterator _iter;
|
||||||
|
|
||||||
void (*destory)(struct _stack* self);
|
void (*_destory)(struct _stack* self);
|
||||||
|
|
||||||
// ---------- public ----------
|
// ---------- public ----------
|
||||||
// kernel
|
// kernel
|
||||||
|
13
src/stack.c
13
src/stack.c
@ -282,7 +282,7 @@ static bool stack_init(struct _stack* self, uint32_t obj_size)
|
|||||||
|
|
||||||
// clear and free node
|
// clear and free node
|
||||||
self->clear = stack_clear;
|
self->clear = stack_clear;
|
||||||
self->destory = stack_destory;
|
self->_destory = stack_destory;
|
||||||
// print
|
// print
|
||||||
self->print = stack_print;
|
self->print = stack_print;
|
||||||
|
|
||||||
@ -304,7 +304,10 @@ const void* stack_iter_next(struct _iterator* iter)
|
|||||||
assert(iter->parent != NULL);
|
assert(iter->parent != NULL);
|
||||||
|
|
||||||
stack_t self = (stack_t)iter->parent;
|
stack_t self = (stack_t)iter->parent;
|
||||||
void *obj = self->_head->obj + self->_iter._cur * self->_obj_size;
|
// from top to bottom
|
||||||
|
uint32_t index = self->size(self) - 1 - self->_iter._cur;
|
||||||
|
|
||||||
|
void *obj = self->_head->obj + self->_obj_size * index;
|
||||||
self->_iter._cur += 1;
|
self->_iter._cur += 1;
|
||||||
return obj;
|
return obj;
|
||||||
}
|
}
|
||||||
@ -360,7 +363,7 @@ static bool stack_init2(struct _stack* self, uint32_t obj_size, uint32_t capacit
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
self->destory = stack2_destory;
|
self->_destory = stack2_destory;
|
||||||
|
|
||||||
// ---------- public ----------
|
// ---------- public ----------
|
||||||
// 2. set function
|
// 2. set function
|
||||||
@ -418,9 +421,9 @@ void stack_free(stack_t *stack)
|
|||||||
assert(stack != NULL);
|
assert(stack != NULL);
|
||||||
if(stack != NULL && *stack != NULL)
|
if(stack != NULL && *stack != NULL)
|
||||||
{
|
{
|
||||||
if((*stack)->destory != NULL)
|
if((*stack)->_destory != NULL)
|
||||||
{
|
{
|
||||||
(*stack)->destory(*stack);
|
(*stack)->_destory(*stack);
|
||||||
}
|
}
|
||||||
free(*stack);
|
free(*stack);
|
||||||
*stack = NULL;
|
*stack = NULL;
|
||||||
|
@ -470,7 +470,7 @@ static void test_stack2_iter(void)
|
|||||||
while(iter->hasnext(iter))
|
while(iter->hasnext(iter))
|
||||||
{
|
{
|
||||||
temp = *(int *)iter->next(iter);
|
temp = *(int *)iter->next(iter);
|
||||||
printf("%d ", temp);
|
// printf("%d ", temp);
|
||||||
TEST_ASSERT_EQUAL_INT(data[len - 1 - i], temp);
|
TEST_ASSERT_EQUAL_INT(data[len - 1 - i], temp);
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user