mirror of
https://gitee.com/apaki/unicstl.git
synced 2025-05-17 19:41:36 +08:00
双向队列删除非核心代码,至于其底层实现是否权衡各种场景,则后续再考虑优化。
This commit is contained in:
parent
51b41f46da
commit
6fb620850e
@ -49,29 +49,15 @@ struct _deque
|
|||||||
bool (*pop_front)(struct _deque* self, void* obj);
|
bool (*pop_front)(struct _deque* self, void* obj);
|
||||||
bool (*back)(struct _deque* self, void* obj);
|
bool (*back)(struct _deque* self, void* obj);
|
||||||
bool (*front)(struct _deque* self, void* obj);
|
bool (*front)(struct _deque* self, void* obj);
|
||||||
bool (*empty)(struct _deque* self);
|
|
||||||
|
|
||||||
// base
|
// base
|
||||||
uint32_t(*size)(struct _deque* self);
|
uint32_t(*size)(struct _deque* self);
|
||||||
bool (*clear)(struct _deque* self);
|
bool (*clear)(struct _deque* self);
|
||||||
|
bool (*empty)(struct _deque* self);
|
||||||
|
|
||||||
// iter
|
// iter
|
||||||
iterator_t (*iter)(struct _deque* self, enum _deque_order order);
|
iterator_t (*iter)(struct _deque* self, enum _deque_order order);
|
||||||
|
|
||||||
// ohters
|
|
||||||
bool (*insert)(struct _deque* self, int index, void* obj);
|
|
||||||
bool (*erase)(struct _deque* self, int index, void* obj);
|
|
||||||
|
|
||||||
int (*index)(struct _deque* self, void* obj);
|
|
||||||
bool (*remove)(struct _deque* self, void* obj);
|
|
||||||
|
|
||||||
bool (*get)(struct _deque* self, int index, void* obj);
|
|
||||||
bool (*set)(struct _deque* self, int index, void* obj);
|
|
||||||
|
|
||||||
// compare
|
|
||||||
// int (*compare)(void* obj, void* obj2);
|
|
||||||
// bool (*sort)(struct _deque* self, uint8_t reserve);
|
|
||||||
|
|
||||||
// -------------------- debug --------------------
|
// -------------------- debug --------------------
|
||||||
void (*print)(struct _deque* self);
|
void (*print)(struct _deque* self);
|
||||||
void (*print_obj)(void* obj);
|
void (*print_obj)(void* obj);
|
||||||
|
66
src/deque.c
66
src/deque.c
@ -198,26 +198,6 @@ static bool deque_front(struct _deque* self, void* obj)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool deque_insert(struct _deque* self, int index, void* obj)
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool deque_erase(struct _deque* self, int index, void* obj)
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int deque_index(struct _deque* self, void* obj)
|
|
||||||
{
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool deque_remove(struct _deque* self, void* obj)
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool deque_clear(struct _deque* self)
|
static bool deque_clear(struct _deque* self)
|
||||||
{
|
{
|
||||||
while (!self->empty(self))
|
while (!self->empty(self))
|
||||||
@ -227,38 +207,6 @@ static bool deque_clear(struct _deque* self)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool deque_get(struct _deque* self, int index, void* obj)
|
|
||||||
{
|
|
||||||
assert(self != NULL);
|
|
||||||
assert(obj != NULL);
|
|
||||||
assert(index >= 0 && index < self->size(self));
|
|
||||||
|
|
||||||
struct _deque_node* node = self->_head; // front
|
|
||||||
|
|
||||||
for (int i = 0; i < index; i++)
|
|
||||||
{
|
|
||||||
node = node->next;
|
|
||||||
}
|
|
||||||
memmove(obj, node->obj, self->_obj_size);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool deque_set(struct _deque* self, int index, void* obj)
|
|
||||||
{
|
|
||||||
assert(self != NULL);
|
|
||||||
assert(obj != NULL);
|
|
||||||
assert(index >= 0 && index < self->size(self));
|
|
||||||
|
|
||||||
struct _deque_node* node = self->_head; // front
|
|
||||||
|
|
||||||
for (int i = 0; i < index; i++)
|
|
||||||
{
|
|
||||||
node = node->next;
|
|
||||||
}
|
|
||||||
memmove(node->obj, obj, self->_obj_size);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
static uint32_t deque_size(struct _deque* self)
|
static uint32_t deque_size(struct _deque* self)
|
||||||
{
|
{
|
||||||
assert(self != NULL);
|
assert(self != NULL);
|
||||||
@ -384,25 +332,15 @@ static bool deque_init(struct _deque* self, uint32_t obj_size)
|
|||||||
self->pop_front = deque_pop_front;
|
self->pop_front = deque_pop_front;
|
||||||
self->back = deque_back;
|
self->back = deque_back;
|
||||||
self->front = deque_front;
|
self->front = deque_front;
|
||||||
self->empty = deque_empty;
|
|
||||||
|
|
||||||
// base
|
// base
|
||||||
self->clear = deque_clear;
|
self->clear = deque_clear;
|
||||||
self->size = deque_size;
|
self->size = deque_size;
|
||||||
|
self->empty = deque_empty;
|
||||||
|
|
||||||
// iter
|
// iter
|
||||||
self->iter = deque_iter;
|
self->iter = deque_iter;
|
||||||
|
|
||||||
// others
|
|
||||||
self->insert = deque_insert;
|
|
||||||
self->erase = deque_erase;
|
|
||||||
|
|
||||||
self->index = deque_index;
|
|
||||||
self->remove = deque_remove;
|
|
||||||
|
|
||||||
self->set = deque_set;
|
|
||||||
self->get = deque_get;
|
|
||||||
|
|
||||||
// -------------------- debug --------------------
|
// -------------------- debug --------------------
|
||||||
self->print = deque_print;
|
self->print = deque_print;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user