demo代码全部修改成new的统一接口,考虑后面把init接口替掉。

This commit is contained in:
建峰 2024-09-01 23:24:25 +08:00
parent a0a49277b0
commit cf8579d03a
4 changed files with 541 additions and 184 deletions

View File

@ -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)

View File

@ -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)

View File

@ -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
View 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();
}