mirror of
https://gitee.com/apaki/unicstl.git
synced 2025-05-17 19:41:36 +08:00
demo代码全部修改成new的统一接口,考虑后面把init接口替掉。
This commit is contained in:
parent
a0a49277b0
commit
cf8579d03a
@ -17,33 +17,33 @@ static void demo_deque_num(void)
|
||||
int temp = 0;
|
||||
uint32_t len = sizeof(data) / sizeof(data[0]);
|
||||
|
||||
struct _deque dq;
|
||||
deque_init(&dq, sizeof(int));
|
||||
dq.print_obj = print_num;
|
||||
deque_t deque = deque_new();
|
||||
deque_init(deque, sizeof(int));
|
||||
deque->print_obj = print_num;
|
||||
|
||||
printf("\n\n----- demo_deque_num -----\n");
|
||||
|
||||
printf("----- after push_back -----\n");
|
||||
for (i = 0; i < len; i++)
|
||||
{
|
||||
dq.push_back(&dq, &data[i]);
|
||||
deque->push_back(deque, &data[i]);
|
||||
|
||||
dq.front(&dq, &temp);
|
||||
deque->front(deque, &temp);
|
||||
printf("front = ");
|
||||
dq.print_obj(&temp);
|
||||
deque->print_obj(&temp);
|
||||
|
||||
dq.back(&dq, &temp);
|
||||
deque->back(deque, &temp);
|
||||
printf("\tback = ");
|
||||
dq.print_obj(&temp);
|
||||
deque->print_obj(&temp);
|
||||
|
||||
printf("\tsize = %2d\n", dq.size(&dq));
|
||||
printf("\tsize = %2d\n", deque->size(deque));
|
||||
}
|
||||
printf("----- print -----\n");
|
||||
dq.print(&dq);
|
||||
deque->print(deque);
|
||||
printf("\n");
|
||||
|
||||
dq.clear(&dq);
|
||||
if (dq.empty(&dq))
|
||||
deque->clear(deque);
|
||||
if (deque->empty(deque))
|
||||
{
|
||||
printf("----- empty -----\n");
|
||||
}
|
||||
@ -51,37 +51,37 @@ static void demo_deque_num(void)
|
||||
printf("----- push_back -----\n");
|
||||
for (i = 0; i < len; i++)
|
||||
{
|
||||
dq.push_back(&dq, &data[i]);
|
||||
deque->push_back(deque, &data[i]);
|
||||
}
|
||||
|
||||
printf("----- after pop_back -----\n");
|
||||
for (i = 0; i < len + 1; i++)
|
||||
{
|
||||
if (true == dq.pop_back(&dq, &temp))
|
||||
if (true == deque->pop_back(deque, &temp))
|
||||
{
|
||||
printf("pop = ");
|
||||
dq.print_obj(&temp);
|
||||
deque->print_obj(&temp);
|
||||
|
||||
if (true == dq.front(&dq, &temp))
|
||||
if (true == deque->front(deque, &temp))
|
||||
{
|
||||
printf("front = ");
|
||||
dq.print_obj(&temp);
|
||||
deque->print_obj(&temp);
|
||||
}
|
||||
|
||||
if (dq.back(&dq, &temp))
|
||||
if (deque->back(deque, &temp))
|
||||
{
|
||||
printf("back = ");
|
||||
dq.print_obj(&temp);
|
||||
deque->print_obj(&temp);
|
||||
}
|
||||
|
||||
printf("size = %2d\n", dq.size(&dq));
|
||||
printf("size = %2d\n", deque->size(deque));
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("pop failed! because it is empty\n");
|
||||
}
|
||||
|
||||
if (dq.empty(&dq))
|
||||
if (deque->empty(deque))
|
||||
{
|
||||
printf("----- empty -----\n");
|
||||
}
|
||||
@ -90,24 +90,24 @@ static void demo_deque_num(void)
|
||||
printf("----- after push_front -----\n");
|
||||
for (i = 0; i < len; i++)
|
||||
{
|
||||
dq.push_front(&dq, &data[i]);
|
||||
deque->push_front(deque, &data[i]);
|
||||
|
||||
dq.front(&dq, &temp);
|
||||
deque->front(deque, &temp);
|
||||
printf("front = ");
|
||||
dq.print_obj(&temp);
|
||||
deque->print_obj(&temp);
|
||||
|
||||
dq.back(&dq, &temp);
|
||||
deque->back(deque, &temp);
|
||||
printf("\tback = ");
|
||||
dq.print_obj(&temp);
|
||||
deque->print_obj(&temp);
|
||||
|
||||
printf("\tsize = %2d\n", dq.size(&dq));
|
||||
printf("\tsize = %2d\n", deque->size(deque));
|
||||
}
|
||||
printf("----- print -----\n");
|
||||
dq.print(&dq);
|
||||
deque->print(deque);
|
||||
printf("\n");
|
||||
|
||||
dq.clear(&dq);
|
||||
if (dq.empty(&dq))
|
||||
deque->clear(deque);
|
||||
if (deque->empty(deque))
|
||||
{
|
||||
printf("----- empty -----\n");
|
||||
}
|
||||
@ -115,67 +115,67 @@ static void demo_deque_num(void)
|
||||
printf("----- push_front -----\n");
|
||||
for (i = 0; i < len; i++)
|
||||
{
|
||||
dq.push_front(&dq, &data[i]);
|
||||
deque->push_front(deque, &data[i]);
|
||||
}
|
||||
|
||||
for (i = 0; i < len + 1; i++)
|
||||
{
|
||||
if (true == dq.pop_front(&dq, &temp))
|
||||
if (true == deque->pop_front(deque, &temp))
|
||||
{
|
||||
printf("pop = ");
|
||||
dq.print_obj(&temp);
|
||||
deque->print_obj(&temp);
|
||||
|
||||
if (true == dq.front(&dq, &temp))
|
||||
if (true == deque->front(deque, &temp))
|
||||
{
|
||||
printf("front = ");
|
||||
dq.print_obj(&temp);
|
||||
deque->print_obj(&temp);
|
||||
}
|
||||
|
||||
if (dq.back(&dq, &temp))
|
||||
if (deque->back(deque, &temp))
|
||||
{
|
||||
printf("back = ");
|
||||
dq.print_obj(&temp);
|
||||
deque->print_obj(&temp);
|
||||
}
|
||||
|
||||
printf("size = %2d\n", dq.size(&dq));
|
||||
printf("size = %2d\n", deque->size(deque));
|
||||
}
|
||||
}
|
||||
|
||||
printf("----- push_front -----\n");
|
||||
for (i = 0; i < len; i++)
|
||||
{
|
||||
dq.push_front(&dq, &data[i]);
|
||||
deque->push_front(deque, &data[i]);
|
||||
}
|
||||
printf("----- print -----\n");
|
||||
dq.print(&dq);
|
||||
deque->print(deque);
|
||||
printf("\n");
|
||||
|
||||
printf("----- set -----\n");
|
||||
temp = 11;
|
||||
dq.set(&dq, 0, &temp);
|
||||
deque->set(deque, 0, &temp);
|
||||
|
||||
temp = 22;
|
||||
dq.set(&dq, len/2, &temp);
|
||||
deque->set(deque, len/2, &temp);
|
||||
|
||||
temp = 33;
|
||||
dq.set(&dq, len - 1, &temp);
|
||||
deque->set(deque, len - 1, &temp);
|
||||
|
||||
printf("----- print -----\n");
|
||||
dq.print(&dq);
|
||||
deque->print(deque);
|
||||
printf("\n");
|
||||
|
||||
printf("----- get -----\n");
|
||||
for (i = 0; i < len; i++)
|
||||
{
|
||||
if (true == dq.get(&dq, i, &temp))
|
||||
if (true == deque->get(deque, i, &temp))
|
||||
{
|
||||
printf("deque[%2d] = ", i);
|
||||
dq.print_obj(&temp);
|
||||
deque->print_obj(&temp);
|
||||
printf("\n");
|
||||
}
|
||||
}
|
||||
|
||||
dq.destory(&dq);
|
||||
deque_free(&deque);
|
||||
}
|
||||
|
||||
static void demo_deque_struct(void)
|
||||
@ -189,33 +189,33 @@ static void demo_deque_struct(void)
|
||||
struct _student temp = {0};
|
||||
uint32_t len = sizeof(data) / sizeof(data[0]);
|
||||
|
||||
struct _deque dq;
|
||||
deque_init(&dq, sizeof(struct _student));
|
||||
dq.print_obj = print_struct;
|
||||
deque_t deque = deque_new();
|
||||
deque_init(deque, sizeof(struct _student));
|
||||
deque->print_obj = print_struct;
|
||||
|
||||
printf("\n\n----- demo_deque_struct -----\n");
|
||||
|
||||
printf("----- after push_back -----\n");
|
||||
for (i = 0; i < len; i++)
|
||||
{
|
||||
dq.push_back(&dq, &data[i]);
|
||||
deque->push_back(deque, &data[i]);
|
||||
|
||||
dq.front(&dq, &temp);
|
||||
deque->front(deque, &temp);
|
||||
printf("front = ");
|
||||
dq.print_obj(&temp);
|
||||
deque->print_obj(&temp);
|
||||
|
||||
dq.back(&dq, &temp);
|
||||
deque->back(deque, &temp);
|
||||
printf("\tback = ");
|
||||
dq.print_obj(&temp);
|
||||
deque->print_obj(&temp);
|
||||
|
||||
printf("\tsize = %2d\n", dq.size(&dq));
|
||||
printf("\tsize = %2d\n", deque->size(deque));
|
||||
}
|
||||
printf("----- print -----\n");
|
||||
dq.print(&dq);
|
||||
deque->print(deque);
|
||||
printf("\n");
|
||||
|
||||
dq.clear(&dq);
|
||||
if (dq.empty(&dq))
|
||||
deque->clear(deque);
|
||||
if (deque->empty(deque))
|
||||
{
|
||||
printf("----- empty -----\n");
|
||||
}
|
||||
@ -223,37 +223,37 @@ static void demo_deque_struct(void)
|
||||
printf("----- push_back -----\n");
|
||||
for (i = 0; i < len; i++)
|
||||
{
|
||||
dq.push_back(&dq, &data[i]);
|
||||
deque->push_back(deque, &data[i]);
|
||||
}
|
||||
|
||||
printf("----- after pop_back -----\n");
|
||||
for (i = 0; i < len + 1; i++)
|
||||
{
|
||||
if (true == dq.pop_back(&dq, &temp))
|
||||
if (true == deque->pop_back(deque, &temp))
|
||||
{
|
||||
printf("pop = ");
|
||||
dq.print_obj(&temp);
|
||||
deque->print_obj(&temp);
|
||||
|
||||
if (true == dq.front(&dq, &temp))
|
||||
if (true == deque->front(deque, &temp))
|
||||
{
|
||||
printf("front = ");
|
||||
dq.print_obj(&temp);
|
||||
deque->print_obj(&temp);
|
||||
}
|
||||
|
||||
if (dq.back(&dq, &temp))
|
||||
if (deque->back(deque, &temp))
|
||||
{
|
||||
printf("back = ");
|
||||
dq.print_obj(&temp);
|
||||
deque->print_obj(&temp);
|
||||
}
|
||||
|
||||
printf("size = %2d\n", dq.size(&dq));
|
||||
printf("size = %2d\n", deque->size(deque));
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("pop failed! because it is empty\n");
|
||||
}
|
||||
|
||||
if (dq.empty(&dq))
|
||||
if (deque->empty(deque))
|
||||
{
|
||||
printf("----- empty -----\n");
|
||||
}
|
||||
@ -262,24 +262,24 @@ static void demo_deque_struct(void)
|
||||
printf("----- after push_front -----\n");
|
||||
for (i = 0; i < len; i++)
|
||||
{
|
||||
dq.push_front(&dq, &data[i]);
|
||||
deque->push_front(deque, &data[i]);
|
||||
|
||||
dq.front(&dq, &temp);
|
||||
deque->front(deque, &temp);
|
||||
printf("front = ");
|
||||
dq.print_obj(&temp);
|
||||
deque->print_obj(&temp);
|
||||
|
||||
dq.back(&dq, &temp);
|
||||
deque->back(deque, &temp);
|
||||
printf("\tback = ");
|
||||
dq.print_obj(&temp);
|
||||
deque->print_obj(&temp);
|
||||
|
||||
printf("\tsize = %2d\n", dq.size(&dq));
|
||||
printf("\tsize = %2d\n", deque->size(deque));
|
||||
}
|
||||
printf("----- print -----\n");
|
||||
dq.print(&dq);
|
||||
deque->print(deque);
|
||||
printf("\n");
|
||||
|
||||
dq.clear(&dq);
|
||||
if (dq.empty(&dq))
|
||||
deque->clear(deque);
|
||||
if (deque->empty(deque))
|
||||
{
|
||||
printf("----- empty -----\n");
|
||||
}
|
||||
@ -287,69 +287,69 @@ static void demo_deque_struct(void)
|
||||
printf("----- push_front -----\n");
|
||||
for (i = 0; i < len; i++)
|
||||
{
|
||||
dq.push_front(&dq, &data[i]);
|
||||
deque->push_front(deque, &data[i]);
|
||||
}
|
||||
|
||||
for (i = 0; i < len + 1; i++)
|
||||
{
|
||||
if (true == dq.pop_front(&dq, &temp))
|
||||
if (true == deque->pop_front(deque, &temp))
|
||||
{
|
||||
printf("pop = ");
|
||||
dq.print_obj(&temp);
|
||||
deque->print_obj(&temp);
|
||||
|
||||
if (true == dq.front(&dq, &temp))
|
||||
if (true == deque->front(deque, &temp))
|
||||
{
|
||||
printf("front = ");
|
||||
dq.print_obj(&temp);
|
||||
deque->print_obj(&temp);
|
||||
}
|
||||
|
||||
if (dq.back(&dq, &temp))
|
||||
if (deque->back(deque, &temp))
|
||||
{
|
||||
printf("back = ");
|
||||
dq.print_obj(&temp);
|
||||
deque->print_obj(&temp);
|
||||
}
|
||||
|
||||
printf("size = %2d\n", dq.size(&dq));
|
||||
printf("size = %2d\n", deque->size(deque));
|
||||
}
|
||||
}
|
||||
|
||||
printf("----- push_front -----\n");
|
||||
for (i = 0; i < len; i++)
|
||||
{
|
||||
dq.push_front(&dq, &data[i]);
|
||||
deque->push_front(deque, &data[i]);
|
||||
}
|
||||
printf("----- print -----\n");
|
||||
dq.print(&dq);
|
||||
deque->print(deque);
|
||||
printf("\n");
|
||||
|
||||
#if 0
|
||||
printf("----- set -----\n");
|
||||
temp = 11;
|
||||
dq.set(&dq, 0, &temp);
|
||||
deque->set(deque, 0, &temp);
|
||||
|
||||
temp = 22;
|
||||
dq.set(&dq, len / 2, &temp);
|
||||
deque->set(deque, len / 2, &temp);
|
||||
|
||||
temp = 33;
|
||||
dq.set(&dq, len - 1, &temp);
|
||||
deque->set(deque, len - 1, &temp);
|
||||
|
||||
printf("----- print -----\n");
|
||||
dq.print(&dq);
|
||||
deque->print(deque);
|
||||
printf("\n");
|
||||
#endif
|
||||
|
||||
printf("----- get -----\n");
|
||||
for (i = 0; i < len; i++)
|
||||
{
|
||||
if (true == dq.get(&dq, i, &temp))
|
||||
if (true == deque->get(deque, i, &temp))
|
||||
{
|
||||
printf("deque[%2d] = ", i);
|
||||
dq.print_obj(&temp);
|
||||
deque->print_obj(&temp);
|
||||
printf("\n");
|
||||
}
|
||||
}
|
||||
|
||||
dq.destory(&dq);
|
||||
deque_free(&deque);
|
||||
}
|
||||
|
||||
void demo_deque(void)
|
||||
|
@ -17,33 +17,33 @@ static void demo_queue_num(void)
|
||||
int temp = 0;
|
||||
uint32_t len = sizeof(data) / sizeof(data[0]);
|
||||
|
||||
struct _queue queue;
|
||||
queue_init(&queue, sizeof(int));
|
||||
queue.print_obj = print_num;
|
||||
queue_t queue = queue_new();
|
||||
queue_init(queue, sizeof(int));
|
||||
queue->print_obj = print_num;
|
||||
|
||||
printf("\n\n----- demo_queue_num -----\n");
|
||||
|
||||
printf("----- after push-----\n");
|
||||
for (i = 0; i < len; i++)
|
||||
{
|
||||
queue.push(&queue, &data[i]);
|
||||
queue->push(queue, &data[i]);
|
||||
|
||||
queue.front(&queue, &temp);
|
||||
queue->front(queue, &temp);
|
||||
printf("front = ");
|
||||
queue.print_obj(&temp);
|
||||
queue->print_obj(&temp);
|
||||
|
||||
queue.back(&queue, &temp);
|
||||
queue->back(queue, &temp);
|
||||
printf("\tback = ");
|
||||
queue.print_obj(&temp);
|
||||
queue->print_obj(&temp);
|
||||
|
||||
printf("\tsize = %2d\n", queue.size(&queue));
|
||||
printf("\tsize = %2d\n", queue->size(queue));
|
||||
}
|
||||
printf("----- print -----\n");
|
||||
queue.print(&queue);
|
||||
queue->print(queue);
|
||||
printf("\n");
|
||||
|
||||
queue.clear(&queue);
|
||||
if (queue.empty(&queue))
|
||||
queue->clear(queue);
|
||||
if (queue->empty(queue))
|
||||
{
|
||||
printf("----- empty -----\n");
|
||||
}
|
||||
@ -51,47 +51,47 @@ static void demo_queue_num(void)
|
||||
printf("----- push -----\n");
|
||||
for (i = 0; i < len; i++)
|
||||
{
|
||||
queue.push(&queue, &data[i]);
|
||||
queue->push(queue, &data[i]);
|
||||
}
|
||||
|
||||
printf("----- after pop -----\n");
|
||||
for (i = 0; i < len + 1; i++)
|
||||
{
|
||||
if (true == queue.pop(&queue, &temp))
|
||||
if (true == queue->pop(queue, &temp))
|
||||
{
|
||||
printf("pop = ");
|
||||
queue.print_obj(&temp);
|
||||
queue->print_obj(&temp);
|
||||
|
||||
if (true == queue.front(&queue, &temp))
|
||||
if (true == queue->front(queue, &temp))
|
||||
{
|
||||
printf("front = ");
|
||||
queue.print_obj(&temp);
|
||||
queue->print_obj(&temp);
|
||||
}
|
||||
|
||||
if (queue.back(&queue, &temp))
|
||||
if (queue->back(queue, &temp))
|
||||
{
|
||||
printf("back = ");
|
||||
queue.print_obj(&temp);
|
||||
queue->print_obj(&temp);
|
||||
}
|
||||
|
||||
printf("size = %2d\n", queue.size(&queue));
|
||||
printf("size = %2d\n", queue->size(queue));
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("pop failed! because it is empty\n");
|
||||
}
|
||||
|
||||
if (queue.empty(&queue))
|
||||
if (queue->empty(queue))
|
||||
{
|
||||
printf("----- empty -----\n");
|
||||
}
|
||||
}
|
||||
|
||||
printf("----- print -----\n");
|
||||
queue.print(&queue);
|
||||
queue->print(queue);
|
||||
printf("\n");
|
||||
|
||||
queue.destory(&queue);
|
||||
queue_free(&queue);
|
||||
}
|
||||
|
||||
|
||||
@ -102,44 +102,43 @@ static void demo_queue_char(void)
|
||||
char temp = 0;
|
||||
uint32_t len = sizeof(data) / sizeof(data[0]) - 1;
|
||||
|
||||
struct _queue queue;
|
||||
// queue_init2(&queue, sizeof(char), 64);
|
||||
queue_init2(&queue, sizeof(char), 10);
|
||||
queue.print_obj = print_char;
|
||||
queue_t queue = queue_new();
|
||||
queue_init2(queue, sizeof(char), 10);
|
||||
queue->print_obj = print_char;
|
||||
|
||||
printf("\n\n----- demo_queue_char -----\n");
|
||||
|
||||
printf("----- after push-----\n");
|
||||
for (i = 0; i < len; i++)
|
||||
{
|
||||
if(queue.push(&queue, &data[i]))
|
||||
if(queue->push(queue, &data[i]))
|
||||
{
|
||||
queue.front(&queue, &temp);
|
||||
queue->front(queue, &temp);
|
||||
printf("front = ");
|
||||
queue.print_obj(&temp);
|
||||
queue->print_obj(&temp);
|
||||
|
||||
queue.back(&queue, &temp);
|
||||
queue->back(queue, &temp);
|
||||
printf("\tback = ");
|
||||
queue.print_obj(&temp);
|
||||
queue->print_obj(&temp);
|
||||
|
||||
printf("\tsize = %2d\n", queue.size(&queue));
|
||||
printf("\tsize = %2d\n", queue->size(queue));
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("push failed! because it is full\n");
|
||||
}
|
||||
|
||||
if(queue.full(&queue))
|
||||
if(queue->full(queue))
|
||||
{
|
||||
printf("----- full -----\n");
|
||||
}
|
||||
}
|
||||
printf("----- print -----\n");
|
||||
queue.print(&queue);
|
||||
queue->print(queue);
|
||||
printf("\n");
|
||||
|
||||
queue.clear(&queue);
|
||||
if (queue.empty(&queue))
|
||||
queue->clear(queue);
|
||||
if (queue->empty(queue))
|
||||
{
|
||||
printf("----- empty -----\n");
|
||||
}
|
||||
@ -147,63 +146,63 @@ static void demo_queue_char(void)
|
||||
printf("----- push -----\n");
|
||||
for (i = 0; i < len; i++)
|
||||
{
|
||||
queue.push(&queue, &data[i]);
|
||||
queue->push(queue, &data[i]);
|
||||
}
|
||||
|
||||
printf("----- after pop -----\n");
|
||||
while(!queue.empty(&queue))
|
||||
while(!queue->empty(queue))
|
||||
{
|
||||
if (true == queue.pop(&queue, &temp))
|
||||
if (true == queue->pop(queue, &temp))
|
||||
{
|
||||
printf("pop = ");
|
||||
queue.print_obj(&temp);
|
||||
queue->print_obj(&temp);
|
||||
|
||||
if (true == queue.front(&queue, &temp))
|
||||
if (true == queue->front(queue, &temp))
|
||||
{
|
||||
printf("front = ");
|
||||
queue.print_obj(&temp);
|
||||
queue->print_obj(&temp);
|
||||
}
|
||||
|
||||
if (queue.back(&queue, &temp))
|
||||
if (queue->back(queue, &temp))
|
||||
{
|
||||
printf("back = ");
|
||||
queue.print_obj(&temp);
|
||||
queue->print_obj(&temp);
|
||||
}
|
||||
|
||||
printf("size = %2d\n", queue.size(&queue));
|
||||
printf("size = %2d\n", queue->size(queue));
|
||||
}
|
||||
}
|
||||
|
||||
if (true == queue.pop(&queue, &temp))
|
||||
if (true == queue->pop(queue, &temp))
|
||||
{
|
||||
printf("pop = ");
|
||||
queue.print_obj(&temp);
|
||||
queue->print_obj(&temp);
|
||||
|
||||
if (true == queue.front(&queue, &temp))
|
||||
if (true == queue->front(queue, &temp))
|
||||
{
|
||||
printf("front = ");
|
||||
queue.print_obj(&temp);
|
||||
queue->print_obj(&temp);
|
||||
}
|
||||
|
||||
if (queue.back(&queue, &temp))
|
||||
if (queue->back(queue, &temp))
|
||||
{
|
||||
printf("back = ");
|
||||
queue.print_obj(&temp);
|
||||
queue->print_obj(&temp);
|
||||
}
|
||||
|
||||
printf("size = %2d\n", queue.size(&queue));
|
||||
printf("size = %2d\n", queue->size(queue));
|
||||
}
|
||||
|
||||
if (queue.empty(&queue))
|
||||
if (queue->empty(queue))
|
||||
{
|
||||
printf("----- empty -----\n");
|
||||
}
|
||||
|
||||
printf("----- print -----\n");
|
||||
queue.print(&queue);
|
||||
queue->print(queue);
|
||||
printf("\n");
|
||||
|
||||
queue.destory(&queue);
|
||||
queue_free(&queue);
|
||||
}
|
||||
|
||||
static void demo_queue_struct(void)
|
||||
|
@ -17,58 +17,58 @@ static void demo_stack_num(void)
|
||||
int temp = 0;
|
||||
uint32_t len = sizeof(data) / sizeof(data[0]);
|
||||
|
||||
struct _stack s;
|
||||
stack_init(&s, sizeof(int));
|
||||
s.print_obj = print_num;
|
||||
stack_t stack = stack_new();
|
||||
stack_init(stack, sizeof(int));
|
||||
stack->print_obj = print_num;
|
||||
|
||||
printf("\n\n----- demo_stack_num -----\n");
|
||||
// get top if stack is empty
|
||||
s.peek(&s, &temp);
|
||||
stack->peek(stack, &temp);
|
||||
|
||||
printf("----- push -----\n");
|
||||
for (i = 0; i < len; i++)
|
||||
{
|
||||
s.push(&s, &data[i]);
|
||||
stack->push(stack, &data[i]);
|
||||
|
||||
s.peek(&s, &temp);
|
||||
stack->peek(stack, &temp);
|
||||
|
||||
printf("top = ");
|
||||
s.print_obj(&temp);
|
||||
stack->print_obj(&temp);
|
||||
|
||||
printf("size = %2d\n", s.size(&s));
|
||||
printf("size = %2d\n", stack->size(stack));
|
||||
}
|
||||
printf("----- print -----\n");
|
||||
s.print(&s);
|
||||
stack->print(stack);
|
||||
printf("\n");
|
||||
|
||||
printf("----- pop -----\n");
|
||||
for (i = 0; i < len + 1; i++)
|
||||
{
|
||||
if (true == s.pop(&s, &temp))
|
||||
if (true == stack->pop(stack, &temp))
|
||||
{
|
||||
printf("pop = ");
|
||||
s.print_obj(&temp);
|
||||
stack->print_obj(&temp);
|
||||
|
||||
if (s.peek(&s, &temp))
|
||||
if (stack->peek(stack, &temp))
|
||||
{
|
||||
printf("top = ");
|
||||
s.print_obj(&temp);
|
||||
stack->print_obj(&temp);
|
||||
}
|
||||
|
||||
printf("size = %2d\n", s.size(&s));
|
||||
printf("size = %2d\n", stack->size(stack));
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("pop failed! because it is empty\n");
|
||||
}
|
||||
|
||||
if (s.empty(&s))
|
||||
if (stack->empty(stack))
|
||||
{
|
||||
printf("----- empty -----\n");
|
||||
}
|
||||
}
|
||||
|
||||
s.destory(&s);
|
||||
stack_free(&stack);
|
||||
}
|
||||
|
||||
static void demo_stack_char(void)
|
||||
@ -78,57 +78,57 @@ static void demo_stack_char(void)
|
||||
char temp = 0;
|
||||
uint32_t len = sizeof(data) / sizeof(data[0]) - 1;
|
||||
|
||||
struct _stack s;
|
||||
stack_init2(&s, sizeof(char), 64);
|
||||
s.print_obj = print_char;
|
||||
stack_t stack = stack_new();
|
||||
stack_init2(stack, sizeof(char), 64);
|
||||
stack->print_obj = print_char;
|
||||
|
||||
printf("\n\n----- demo_stack_char -----\n");
|
||||
// get top if stack is empty
|
||||
s.peek(&s, &temp);
|
||||
stack->peek(stack, &temp);
|
||||
|
||||
printf("----- push -----\n");
|
||||
for (i = 0; i < len; i++)
|
||||
{
|
||||
s.push(&s, &data[i]);
|
||||
stack->push(stack, &data[i]);
|
||||
|
||||
s.peek(&s, &temp);
|
||||
stack->peek(stack, &temp);
|
||||
printf("top = ");
|
||||
s.print_obj(&temp);
|
||||
stack->print_obj(&temp);
|
||||
|
||||
printf("size = %2d\n", s.size(&s));
|
||||
printf("size = %2d\n", stack->size(stack));
|
||||
}
|
||||
printf("----- print -----\n");
|
||||
s.print(&s);
|
||||
stack->print(stack);
|
||||
printf("\n");
|
||||
|
||||
printf("----- pop -----\n");
|
||||
for (i = 0; i < len + 1; i++)
|
||||
{
|
||||
if (true == s.pop(&s, &temp))
|
||||
if (true == stack->pop(stack, &temp))
|
||||
{
|
||||
printf("pop = ");
|
||||
s.print_obj(&temp);
|
||||
stack->print_obj(&temp);
|
||||
|
||||
if (s.peek(&s, &temp))
|
||||
if (stack->peek(stack, &temp))
|
||||
{
|
||||
printf("top = ");
|
||||
s.print_obj(&temp);
|
||||
stack->print_obj(&temp);
|
||||
}
|
||||
|
||||
printf("size = %2d\n", s.size(&s));
|
||||
printf("size = %2d\n", stack->size(stack));
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("pop failed! because it is empty\n");
|
||||
}
|
||||
|
||||
if (s.empty(&s))
|
||||
if (stack->empty(stack))
|
||||
{
|
||||
printf("----- empty -----\n");
|
||||
}
|
||||
}
|
||||
|
||||
s.destory(&s);
|
||||
stack_free(&stack);
|
||||
}
|
||||
|
||||
static void demo_stack_struct(void)
|
||||
@ -141,8 +141,7 @@ static void demo_stack_struct(void)
|
||||
struct _student temp = { 0 };
|
||||
uint32_t len = sizeof(data) / sizeof(data[0]);
|
||||
|
||||
stack_t stack;
|
||||
stack = stack_new();
|
||||
stack_t stack = stack_new();
|
||||
stack_init(stack, sizeof(struct _student));
|
||||
stack->print_obj = print_struct;
|
||||
|
||||
|
359
test/test_deque.c
Normal file
359
test/test_deque.c
Normal file
@ -0,0 +1,359 @@
|
||||
/**
|
||||
* @file test_deque.c
|
||||
* @author wenjf (Orig5826@163.com)
|
||||
* @brief
|
||||
* @version 0.1
|
||||
* @date 2024-09-01
|
||||
*
|
||||
* @copyright Copyright (c) 2024
|
||||
*
|
||||
*/
|
||||
#include "test.h"
|
||||
|
||||
static void demo_deque_num(void)
|
||||
{
|
||||
uint32_t i = 0;
|
||||
int data[] = { 1,2,3,4,5,6,7,8,9,10 };
|
||||
int temp = 0;
|
||||
uint32_t len = sizeof(data) / sizeof(data[0]);
|
||||
|
||||
struct _deque dq;
|
||||
deque_init(&dq, sizeof(int));
|
||||
dq.print_obj = print_num;
|
||||
|
||||
printf("\n\n----- demo_deque_num -----\n");
|
||||
|
||||
printf("----- after push_back -----\n");
|
||||
for (i = 0; i < len; i++)
|
||||
{
|
||||
dq.push_back(&dq, &data[i]);
|
||||
|
||||
dq.front(&dq, &temp);
|
||||
printf("front = ");
|
||||
dq.print_obj(&temp);
|
||||
|
||||
dq.back(&dq, &temp);
|
||||
printf("\tback = ");
|
||||
dq.print_obj(&temp);
|
||||
|
||||
printf("\tsize = %2d\n", dq.size(&dq));
|
||||
}
|
||||
printf("----- print -----\n");
|
||||
dq.print(&dq);
|
||||
printf("\n");
|
||||
|
||||
dq.clear(&dq);
|
||||
if (dq.empty(&dq))
|
||||
{
|
||||
printf("----- empty -----\n");
|
||||
}
|
||||
|
||||
printf("----- push_back -----\n");
|
||||
for (i = 0; i < len; i++)
|
||||
{
|
||||
dq.push_back(&dq, &data[i]);
|
||||
}
|
||||
|
||||
printf("----- after pop_back -----\n");
|
||||
for (i = 0; i < len + 1; i++)
|
||||
{
|
||||
if (true == dq.pop_back(&dq, &temp))
|
||||
{
|
||||
printf("pop = ");
|
||||
dq.print_obj(&temp);
|
||||
|
||||
if (true == dq.front(&dq, &temp))
|
||||
{
|
||||
printf("front = ");
|
||||
dq.print_obj(&temp);
|
||||
}
|
||||
|
||||
if (dq.back(&dq, &temp))
|
||||
{
|
||||
printf("back = ");
|
||||
dq.print_obj(&temp);
|
||||
}
|
||||
|
||||
printf("size = %2d\n", dq.size(&dq));
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("pop failed! because it is empty\n");
|
||||
}
|
||||
|
||||
if (dq.empty(&dq))
|
||||
{
|
||||
printf("----- empty -----\n");
|
||||
}
|
||||
}
|
||||
|
||||
printf("----- after push_front -----\n");
|
||||
for (i = 0; i < len; i++)
|
||||
{
|
||||
dq.push_front(&dq, &data[i]);
|
||||
|
||||
dq.front(&dq, &temp);
|
||||
printf("front = ");
|
||||
dq.print_obj(&temp);
|
||||
|
||||
dq.back(&dq, &temp);
|
||||
printf("\tback = ");
|
||||
dq.print_obj(&temp);
|
||||
|
||||
printf("\tsize = %2d\n", dq.size(&dq));
|
||||
}
|
||||
printf("----- print -----\n");
|
||||
dq.print(&dq);
|
||||
printf("\n");
|
||||
|
||||
dq.clear(&dq);
|
||||
if (dq.empty(&dq))
|
||||
{
|
||||
printf("----- empty -----\n");
|
||||
}
|
||||
|
||||
printf("----- push_front -----\n");
|
||||
for (i = 0; i < len; i++)
|
||||
{
|
||||
dq.push_front(&dq, &data[i]);
|
||||
}
|
||||
|
||||
for (i = 0; i < len + 1; i++)
|
||||
{
|
||||
if (true == dq.pop_front(&dq, &temp))
|
||||
{
|
||||
printf("pop = ");
|
||||
dq.print_obj(&temp);
|
||||
|
||||
if (true == dq.front(&dq, &temp))
|
||||
{
|
||||
printf("front = ");
|
||||
dq.print_obj(&temp);
|
||||
}
|
||||
|
||||
if (dq.back(&dq, &temp))
|
||||
{
|
||||
printf("back = ");
|
||||
dq.print_obj(&temp);
|
||||
}
|
||||
|
||||
printf("size = %2d\n", dq.size(&dq));
|
||||
}
|
||||
}
|
||||
|
||||
printf("----- push_front -----\n");
|
||||
for (i = 0; i < len; i++)
|
||||
{
|
||||
dq.push_front(&dq, &data[i]);
|
||||
}
|
||||
printf("----- print -----\n");
|
||||
dq.print(&dq);
|
||||
printf("\n");
|
||||
|
||||
printf("----- set -----\n");
|
||||
temp = 11;
|
||||
dq.set(&dq, 0, &temp);
|
||||
|
||||
temp = 22;
|
||||
dq.set(&dq, len/2, &temp);
|
||||
|
||||
temp = 33;
|
||||
dq.set(&dq, len - 1, &temp);
|
||||
|
||||
printf("----- print -----\n");
|
||||
dq.print(&dq);
|
||||
printf("\n");
|
||||
|
||||
printf("----- get -----\n");
|
||||
for (i = 0; i < len; i++)
|
||||
{
|
||||
if (true == dq.get(&dq, i, &temp))
|
||||
{
|
||||
printf("deque[%2d] = ", i);
|
||||
dq.print_obj(&temp);
|
||||
printf("\n");
|
||||
}
|
||||
}
|
||||
|
||||
dq.destory(&dq);
|
||||
}
|
||||
|
||||
static void demo_deque_struct(void)
|
||||
{
|
||||
uint32_t i = 0;
|
||||
struct _student data[] = {
|
||||
"zhao", 1001, "qian", 1002, "sun", 1003, "li", 1004,
|
||||
"zhou", 1005, "wu", 1006, "zheng", 1007, "wang", 1008,
|
||||
"feng", 1009, "cheng",1010,
|
||||
};
|
||||
struct _student temp = {0};
|
||||
uint32_t len = sizeof(data) / sizeof(data[0]);
|
||||
|
||||
struct _deque dq;
|
||||
deque_init(&dq, sizeof(struct _student));
|
||||
dq.print_obj = print_struct;
|
||||
|
||||
printf("\n\n----- demo_deque_struct -----\n");
|
||||
|
||||
printf("----- after push_back -----\n");
|
||||
for (i = 0; i < len; i++)
|
||||
{
|
||||
dq.push_back(&dq, &data[i]);
|
||||
|
||||
dq.front(&dq, &temp);
|
||||
printf("front = ");
|
||||
dq.print_obj(&temp);
|
||||
|
||||
dq.back(&dq, &temp);
|
||||
printf("\tback = ");
|
||||
dq.print_obj(&temp);
|
||||
|
||||
printf("\tsize = %2d\n", dq.size(&dq));
|
||||
}
|
||||
printf("----- print -----\n");
|
||||
dq.print(&dq);
|
||||
printf("\n");
|
||||
|
||||
dq.clear(&dq);
|
||||
if (dq.empty(&dq))
|
||||
{
|
||||
printf("----- empty -----\n");
|
||||
}
|
||||
|
||||
printf("----- push_back -----\n");
|
||||
for (i = 0; i < len; i++)
|
||||
{
|
||||
dq.push_back(&dq, &data[i]);
|
||||
}
|
||||
|
||||
printf("----- after pop_back -----\n");
|
||||
for (i = 0; i < len + 1; i++)
|
||||
{
|
||||
if (true == dq.pop_back(&dq, &temp))
|
||||
{
|
||||
printf("pop = ");
|
||||
dq.print_obj(&temp);
|
||||
|
||||
if (true == dq.front(&dq, &temp))
|
||||
{
|
||||
printf("front = ");
|
||||
dq.print_obj(&temp);
|
||||
}
|
||||
|
||||
if (dq.back(&dq, &temp))
|
||||
{
|
||||
printf("back = ");
|
||||
dq.print_obj(&temp);
|
||||
}
|
||||
|
||||
printf("size = %2d\n", dq.size(&dq));
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("pop failed! because it is empty\n");
|
||||
}
|
||||
|
||||
if (dq.empty(&dq))
|
||||
{
|
||||
printf("----- empty -----\n");
|
||||
}
|
||||
}
|
||||
|
||||
printf("----- after push_front -----\n");
|
||||
for (i = 0; i < len; i++)
|
||||
{
|
||||
dq.push_front(&dq, &data[i]);
|
||||
|
||||
dq.front(&dq, &temp);
|
||||
printf("front = ");
|
||||
dq.print_obj(&temp);
|
||||
|
||||
dq.back(&dq, &temp);
|
||||
printf("\tback = ");
|
||||
dq.print_obj(&temp);
|
||||
|
||||
printf("\tsize = %2d\n", dq.size(&dq));
|
||||
}
|
||||
printf("----- print -----\n");
|
||||
dq.print(&dq);
|
||||
printf("\n");
|
||||
|
||||
dq.clear(&dq);
|
||||
if (dq.empty(&dq))
|
||||
{
|
||||
printf("----- empty -----\n");
|
||||
}
|
||||
|
||||
printf("----- push_front -----\n");
|
||||
for (i = 0; i < len; i++)
|
||||
{
|
||||
dq.push_front(&dq, &data[i]);
|
||||
}
|
||||
|
||||
for (i = 0; i < len + 1; i++)
|
||||
{
|
||||
if (true == dq.pop_front(&dq, &temp))
|
||||
{
|
||||
printf("pop = ");
|
||||
dq.print_obj(&temp);
|
||||
|
||||
if (true == dq.front(&dq, &temp))
|
||||
{
|
||||
printf("front = ");
|
||||
dq.print_obj(&temp);
|
||||
}
|
||||
|
||||
if (dq.back(&dq, &temp))
|
||||
{
|
||||
printf("back = ");
|
||||
dq.print_obj(&temp);
|
||||
}
|
||||
|
||||
printf("size = %2d\n", dq.size(&dq));
|
||||
}
|
||||
}
|
||||
|
||||
printf("----- push_front -----\n");
|
||||
for (i = 0; i < len; i++)
|
||||
{
|
||||
dq.push_front(&dq, &data[i]);
|
||||
}
|
||||
printf("----- print -----\n");
|
||||
dq.print(&dq);
|
||||
printf("\n");
|
||||
|
||||
#if 0
|
||||
printf("----- set -----\n");
|
||||
temp = 11;
|
||||
dq.set(&dq, 0, &temp);
|
||||
|
||||
temp = 22;
|
||||
dq.set(&dq, len / 2, &temp);
|
||||
|
||||
temp = 33;
|
||||
dq.set(&dq, len - 1, &temp);
|
||||
|
||||
printf("----- print -----\n");
|
||||
dq.print(&dq);
|
||||
printf("\n");
|
||||
#endif
|
||||
|
||||
printf("----- get -----\n");
|
||||
for (i = 0; i < len; i++)
|
||||
{
|
||||
if (true == dq.get(&dq, i, &temp))
|
||||
{
|
||||
printf("deque[%2d] = ", i);
|
||||
dq.print_obj(&temp);
|
||||
printf("\n");
|
||||
}
|
||||
}
|
||||
|
||||
dq.destory(&dq);
|
||||
}
|
||||
|
||||
void demo_deque(void)
|
||||
{
|
||||
demo_deque_num();
|
||||
demo_deque_struct();
|
||||
}
|
Loading…
Reference in New Issue
Block a user