mirror of
https://gitee.com/apaki/unicstl.git
synced 2025-07-03 23:56:54 +08:00
在示例中去掉原遍历接口
This commit is contained in:
parent
192f1962e6
commit
0a291edb3d
265
demo/demo_tree.c
265
demo/demo_tree.c
@ -35,8 +35,9 @@ void demo_avltree_num(void)
|
|||||||
// int data[] = { 1,2,3,4,5,6};
|
// int data[] = { 1,2,3,4,5,6};
|
||||||
// int data[] = { 5,2,3,1,7,8,6 };
|
// int data[] = { 5,2,3,1,7,8,6 };
|
||||||
int data[] = { 5,2,3,1,7,8,6,4,9,10,12,11,15,14,13 };
|
int data[] = { 5,2,3,1,7,8,6,4,9,10,12,11,15,14,13 };
|
||||||
int temp = 0;
|
|
||||||
uint32_t len = sizeof(data) / sizeof(data[0]);
|
uint32_t len = sizeof(data) / sizeof(data[0]);
|
||||||
|
int temp = 0;
|
||||||
|
iterator_t iter = NULL;
|
||||||
|
|
||||||
tree_t tree = tree_avl_new(sizeof(int));
|
tree_t tree = tree_avl_new(sizeof(int));
|
||||||
tree->print_obj = print_num;
|
tree->print_obj = print_num;
|
||||||
@ -53,7 +54,13 @@ void demo_avltree_num(void)
|
|||||||
printf("insert = ");
|
printf("insert = ");
|
||||||
tree->print_obj(&temp);
|
tree->print_obj(&temp);
|
||||||
printf("size = %2d : ", tree->size(tree));
|
printf("size = %2d : ", tree->size(tree));
|
||||||
tree->preorder(tree, tree->_root);
|
|
||||||
|
iter = tree->iter(tree, ORDER_LEFT_PRE);
|
||||||
|
while(iter->hasnext(iter))
|
||||||
|
{
|
||||||
|
temp = *(int *)iter->next(iter);
|
||||||
|
tree->print_obj(&temp);
|
||||||
|
}
|
||||||
printf("\n");
|
printf("\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -81,45 +88,85 @@ void demo_avltree_num(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
printf("----- preorder -----\n");
|
printf("----- preorder -----\n");
|
||||||
tree->preorder(tree, tree->_root);
|
iter = tree->iter(tree, ORDER_LEFT_PRE);
|
||||||
|
while(iter->hasnext(iter))
|
||||||
|
{
|
||||||
|
temp = *(int *)iter->next(iter);
|
||||||
|
tree->print_obj(&temp);
|
||||||
|
}
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
|
||||||
printf("----- inorder -----\n");
|
printf("----- inorder -----\n");
|
||||||
tree->inorder(tree, tree->_root);
|
iter = tree->iter(tree, ORDER_LEFT_IN);
|
||||||
|
while(iter->hasnext(iter))
|
||||||
|
{
|
||||||
|
temp = *(int *)iter->next(iter);
|
||||||
|
tree->print_obj(&temp);
|
||||||
|
}
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
|
||||||
printf("----- postorder -----\n");
|
printf("----- postorder -----\n");
|
||||||
tree->postorder(tree, tree->_root);
|
iter = tree->iter(tree, ORDER_LEFT_POST);
|
||||||
|
while(iter->hasnext(iter))
|
||||||
|
{
|
||||||
|
temp = *(int *)iter->next(iter);
|
||||||
|
tree->print_obj(&temp);
|
||||||
|
}
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
|
||||||
printf("----- breadth -----\n");
|
printf("----- breadth -----\n");
|
||||||
tree->breadth(tree, tree->_root);
|
iter = tree->iter(tree, ORDER_LEFT_BREADTH);
|
||||||
|
while(iter->hasnext(iter))
|
||||||
|
{
|
||||||
|
temp = *(int *)iter->next(iter);
|
||||||
|
tree->print_obj(&temp);
|
||||||
|
}
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
|
||||||
printf("----- right priority -----\n");
|
|
||||||
tree->order(tree, true);
|
|
||||||
|
|
||||||
printf("----- preorder(right) -----\n");
|
printf("----- preorder(right) -----\n");
|
||||||
tree->preorder(tree, tree->_root);
|
iter = tree->iter(tree, ORDER_RIGHT_PRE);
|
||||||
|
while(iter->hasnext(iter))
|
||||||
|
{
|
||||||
|
temp = *(int *)iter->next(iter);
|
||||||
|
tree->print_obj(&temp);
|
||||||
|
}
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
|
||||||
printf("----- inorder(right) -----\n");
|
printf("----- inorder(right) -----\n");
|
||||||
tree->inorder(tree, tree->_root);
|
iter = tree->iter(tree, ORDER_RIGHT_IN);
|
||||||
|
while(iter->hasnext(iter))
|
||||||
|
{
|
||||||
|
temp = *(int *)iter->next(iter);
|
||||||
|
tree->print_obj(&temp);
|
||||||
|
}
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
|
||||||
printf("----- postorder(right) -----\n");
|
printf("----- postorder(right) -----\n");
|
||||||
tree->postorder(tree, tree->_root);
|
iter = tree->iter(tree, ORDER_RIGHT_POST);
|
||||||
|
while(iter->hasnext(iter))
|
||||||
|
{
|
||||||
|
temp = *(int *)iter->next(iter);
|
||||||
|
tree->print_obj(&temp);
|
||||||
|
}
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
|
||||||
printf("----- breadth(right) -----\n");
|
printf("----- breadth(right) -----\n");
|
||||||
tree->breadth(tree, tree->_root);
|
iter = tree->iter(tree, ORDER_RIGHT_BREADTH);
|
||||||
|
while(iter->hasnext(iter))
|
||||||
|
{
|
||||||
|
temp = *(int *)iter->next(iter);
|
||||||
|
tree->print_obj(&temp);
|
||||||
|
}
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
|
||||||
|
|
||||||
printf("----- left priority -----\n");
|
printf("----- preorder(left) -----\n");
|
||||||
tree->order(tree, false);
|
iter = tree->iter(tree, ORDER_LEFT_PRE);
|
||||||
printf("----- preorder -----\n");
|
while(iter->hasnext(iter))
|
||||||
tree->preorder(tree, tree->_root);
|
{
|
||||||
|
temp = *(int *)iter->next(iter);
|
||||||
|
tree->print_obj(&temp);
|
||||||
|
}
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
|
||||||
for (i = 0; i < len; i++)
|
for (i = 0; i < len; i++)
|
||||||
@ -131,7 +178,13 @@ void demo_avltree_num(void)
|
|||||||
printf("delete = ");
|
printf("delete = ");
|
||||||
tree->print_obj(&temp);
|
tree->print_obj(&temp);
|
||||||
printf("size = %2d : ", tree->size(tree));
|
printf("size = %2d : ", tree->size(tree));
|
||||||
tree->preorder(tree, tree->_root);
|
|
||||||
|
iter = tree->iter(tree, ORDER_LEFT_PRE);
|
||||||
|
while(iter->hasnext(iter))
|
||||||
|
{
|
||||||
|
temp = *(int *)iter->next(iter);
|
||||||
|
tree->print_obj(&temp);
|
||||||
|
}
|
||||||
printf("\n");
|
printf("\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -206,8 +259,9 @@ void demo_rbtree_num(void)
|
|||||||
// int data[] = { 1,2,3,4,5,6};
|
// int data[] = { 1,2,3,4,5,6};
|
||||||
// int data[] = { 5,2,3,1,7,8,6 };
|
// int data[] = { 5,2,3,1,7,8,6 };
|
||||||
int data[] = { 5,2,3,1,7,8,6,4,9,10,12,11,15,14,13 };
|
int data[] = { 5,2,3,1,7,8,6,4,9,10,12,11,15,14,13 };
|
||||||
int temp = 0;
|
|
||||||
uint32_t len = sizeof(data) / sizeof(data[0]);
|
uint32_t len = sizeof(data) / sizeof(data[0]);
|
||||||
|
int temp = 0;
|
||||||
|
iterator_t iter = NULL;
|
||||||
|
|
||||||
tree_t tree = tree_rb_new(sizeof(int));
|
tree_t tree = tree_rb_new(sizeof(int));
|
||||||
tree->print_obj = print_num;
|
tree->print_obj = print_num;
|
||||||
@ -224,7 +278,13 @@ void demo_rbtree_num(void)
|
|||||||
printf("insert = ");
|
printf("insert = ");
|
||||||
tree->print_obj(&temp);
|
tree->print_obj(&temp);
|
||||||
printf("size = %2d : ", tree->size(tree));
|
printf("size = %2d : ", tree->size(tree));
|
||||||
tree->preorder(tree, tree->_root);
|
|
||||||
|
iter = tree->iter(tree, ORDER_LEFT_PRE);
|
||||||
|
while(iter->hasnext(iter))
|
||||||
|
{
|
||||||
|
temp = *(int *)iter->next(iter);
|
||||||
|
tree->print_obj(&temp);
|
||||||
|
}
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
|
||||||
if(true != tree_rb_check(tree))
|
if(true != tree_rb_check(tree))
|
||||||
@ -258,45 +318,84 @@ void demo_rbtree_num(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
printf("----- preorder -----\n");
|
printf("----- preorder -----\n");
|
||||||
tree->preorder(tree, tree->_root);
|
iter = tree->iter(tree, ORDER_LEFT_PRE);
|
||||||
|
while(iter->hasnext(iter))
|
||||||
|
{
|
||||||
|
temp = *(int *)iter->next(iter);
|
||||||
|
tree->print_obj(&temp);
|
||||||
|
}
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
|
||||||
printf("----- inorder -----\n");
|
printf("----- inorder -----\n");
|
||||||
tree->inorder(tree, tree->_root);
|
iter = tree->iter(tree, ORDER_LEFT_IN);
|
||||||
|
while(iter->hasnext(iter))
|
||||||
|
{
|
||||||
|
temp = *(int *)iter->next(iter);
|
||||||
|
tree->print_obj(&temp);
|
||||||
|
}
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
|
||||||
printf("----- postorder -----\n");
|
printf("----- postorder -----\n");
|
||||||
tree->postorder(tree, tree->_root);
|
iter = tree->iter(tree, ORDER_LEFT_POST);
|
||||||
|
while(iter->hasnext(iter))
|
||||||
|
{
|
||||||
|
temp = *(int *)iter->next(iter);
|
||||||
|
tree->print_obj(&temp);
|
||||||
|
}
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
|
||||||
printf("----- breadth -----\n");
|
printf("----- breadth -----\n");
|
||||||
tree->breadth(tree, tree->_root);
|
iter = tree->iter(tree, ORDER_LEFT_BREADTH);
|
||||||
|
while(iter->hasnext(iter))
|
||||||
|
{
|
||||||
|
temp = *(int *)iter->next(iter);
|
||||||
|
tree->print_obj(&temp);
|
||||||
|
}
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
|
||||||
printf("----- right priority -----\n");
|
|
||||||
tree->order(tree, true);
|
|
||||||
|
|
||||||
printf("----- preorder(right) -----\n");
|
printf("----- preorder(right) -----\n");
|
||||||
tree->preorder(tree, tree->_root);
|
iter = tree->iter(tree, ORDER_RIGHT_PRE);
|
||||||
|
while(iter->hasnext(iter))
|
||||||
|
{
|
||||||
|
temp = *(int *)iter->next(iter);
|
||||||
|
tree->print_obj(&temp);
|
||||||
|
}
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
|
||||||
printf("----- inorder(right) -----\n");
|
printf("----- inorder(right) -----\n");
|
||||||
tree->inorder(tree, tree->_root);
|
iter = tree->iter(tree, ORDER_RIGHT_IN);
|
||||||
|
while(iter->hasnext(iter))
|
||||||
|
{
|
||||||
|
temp = *(int *)iter->next(iter);
|
||||||
|
tree->print_obj(&temp);
|
||||||
|
}
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
|
||||||
printf("----- postorder(right) -----\n");
|
printf("----- postorder(right) -----\n");
|
||||||
tree->postorder(tree, tree->_root);
|
iter = tree->iter(tree, ORDER_RIGHT_POST);
|
||||||
|
while(iter->hasnext(iter))
|
||||||
|
{
|
||||||
|
temp = *(int *)iter->next(iter);
|
||||||
|
tree->print_obj(&temp);
|
||||||
|
}
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
|
||||||
printf("----- breadth(right) -----\n");
|
printf("----- breadth(right) -----\n");
|
||||||
tree->breadth(tree, tree->_root);
|
iter = tree->iter(tree, ORDER_RIGHT_BREADTH);
|
||||||
|
while(iter->hasnext(iter))
|
||||||
|
{
|
||||||
|
temp = *(int *)iter->next(iter);
|
||||||
|
tree->print_obj(&temp);
|
||||||
|
}
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
|
||||||
#if 1
|
|
||||||
printf("----- left priority -----\n");
|
|
||||||
tree->order(tree, false);
|
|
||||||
printf("----- preorder -----\n");
|
printf("----- preorder -----\n");
|
||||||
tree->preorder(tree, tree->_root);
|
iter = tree->iter(tree, ORDER_LEFT_PRE);
|
||||||
|
while(iter->hasnext(iter))
|
||||||
|
{
|
||||||
|
temp = *(int *)iter->next(iter);
|
||||||
|
tree->print_obj(&temp);
|
||||||
|
}
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
|
||||||
for (i = 0; i < len; i++)
|
for (i = 0; i < len; i++)
|
||||||
@ -309,7 +408,13 @@ void demo_rbtree_num(void)
|
|||||||
tree->delete(tree, &temp);
|
tree->delete(tree, &temp);
|
||||||
|
|
||||||
printf("size = %2d : ", tree->size(tree));
|
printf("size = %2d : ", tree->size(tree));
|
||||||
tree->preorder(tree, tree->_root);
|
|
||||||
|
iter = tree->iter(tree, ORDER_LEFT_PRE);
|
||||||
|
while(iter->hasnext(iter))
|
||||||
|
{
|
||||||
|
temp = *(int *)iter->next(iter);
|
||||||
|
tree->print_obj(&temp);
|
||||||
|
}
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
|
||||||
if(true != tree_rb_check(tree))
|
if(true != tree_rb_check(tree))
|
||||||
@ -323,7 +428,6 @@ void demo_rbtree_num(void)
|
|||||||
{
|
{
|
||||||
printf("----- empty -----\n");
|
printf("----- empty -----\n");
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
tree_free(&tree);
|
tree_free(&tree);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -339,6 +443,7 @@ void demo_rbtree_struct(void)
|
|||||||
};
|
};
|
||||||
struct _student temp = {0};
|
struct _student temp = {0};
|
||||||
uint32_t len = sizeof(data) / sizeof(data[0]);
|
uint32_t len = sizeof(data) / sizeof(data[0]);
|
||||||
|
iterator_t iter = NULL;
|
||||||
|
|
||||||
tree_t tree = tree_rb_new(sizeof(struct _student));
|
tree_t tree = tree_rb_new(sizeof(struct _student));
|
||||||
tree->print_obj = print_struct;
|
tree->print_obj = print_struct;
|
||||||
@ -355,7 +460,13 @@ void demo_rbtree_struct(void)
|
|||||||
printf("insert = ");
|
printf("insert = ");
|
||||||
tree->print_obj(&temp);
|
tree->print_obj(&temp);
|
||||||
printf("size = %2d : ", tree->size(tree));
|
printf("size = %2d : ", tree->size(tree));
|
||||||
tree->preorder(tree, tree->_root);
|
|
||||||
|
iter = tree->iter(tree, ORDER_LEFT_PRE);
|
||||||
|
while(iter->hasnext(iter))
|
||||||
|
{
|
||||||
|
temp = *(struct _student *)iter->next(iter);
|
||||||
|
tree->print_obj(&temp);
|
||||||
|
}
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
|
||||||
if(true != tree_rb_check(tree))
|
if(true != tree_rb_check(tree))
|
||||||
@ -389,45 +500,84 @@ void demo_rbtree_struct(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
printf("----- preorder -----\n");
|
printf("----- preorder -----\n");
|
||||||
tree->preorder(tree, tree->_root);
|
iter = tree->iter(tree, ORDER_LEFT_PRE);
|
||||||
|
while(iter->hasnext(iter))
|
||||||
|
{
|
||||||
|
temp = *(struct _student *)iter->next(iter);
|
||||||
|
tree->print_obj(&temp);
|
||||||
|
}
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
|
||||||
printf("----- inorder -----\n");
|
printf("----- inorder -----\n");
|
||||||
tree->inorder(tree, tree->_root);
|
iter = tree->iter(tree, ORDER_LEFT_IN);
|
||||||
|
while(iter->hasnext(iter))
|
||||||
|
{
|
||||||
|
temp = *(struct _student *)iter->next(iter);
|
||||||
|
tree->print_obj(&temp);
|
||||||
|
}
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
|
||||||
printf("----- postorder -----\n");
|
printf("----- postorder -----\n");
|
||||||
tree->postorder(tree, tree->_root);
|
iter = tree->iter(tree, ORDER_LEFT_POST);
|
||||||
|
while(iter->hasnext(iter))
|
||||||
|
{
|
||||||
|
temp = *(struct _student *)iter->next(iter);
|
||||||
|
tree->print_obj(&temp);
|
||||||
|
}
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
|
||||||
printf("----- breadth -----\n");
|
printf("----- breadth -----\n");
|
||||||
tree->breadth(tree, tree->_root);
|
iter = tree->iter(tree, ORDER_LEFT_BREADTH);
|
||||||
|
while(iter->hasnext(iter))
|
||||||
|
{
|
||||||
|
temp = *(struct _student *)iter->next(iter);
|
||||||
|
tree->print_obj(&temp);
|
||||||
|
}
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
|
||||||
printf("----- right priority -----\n");
|
|
||||||
tree->order(tree, true);
|
|
||||||
|
|
||||||
printf("----- preorder(right) -----\n");
|
printf("----- preorder(right) -----\n");
|
||||||
tree->preorder(tree, tree->_root);
|
iter = tree->iter(tree, ORDER_RIGHT_PRE);
|
||||||
|
while(iter->hasnext(iter))
|
||||||
|
{
|
||||||
|
temp = *(struct _student *)iter->next(iter);
|
||||||
|
tree->print_obj(&temp);
|
||||||
|
}
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
|
||||||
printf("----- inorder(right) -----\n");
|
printf("----- inorder(right) -----\n");
|
||||||
tree->inorder(tree, tree->_root);
|
iter = tree->iter(tree, ORDER_RIGHT_IN);
|
||||||
|
while(iter->hasnext(iter))
|
||||||
|
{
|
||||||
|
temp = *(struct _student *)iter->next(iter);
|
||||||
|
tree->print_obj(&temp);
|
||||||
|
}
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
|
||||||
printf("----- postorder(right) -----\n");
|
printf("----- postorder(right) -----\n");
|
||||||
tree->postorder(tree, tree->_root);
|
iter = tree->iter(tree, ORDER_RIGHT_POST);
|
||||||
|
while(iter->hasnext(iter))
|
||||||
|
{
|
||||||
|
temp = *(struct _student *)iter->next(iter);
|
||||||
|
tree->print_obj(&temp);
|
||||||
|
}
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
|
||||||
printf("----- breadth(right) -----\n");
|
printf("----- breadth(right) -----\n");
|
||||||
tree->breadth(tree, tree->_root);
|
iter = tree->iter(tree, ORDER_RIGHT_BREADTH);
|
||||||
|
while(iter->hasnext(iter))
|
||||||
|
{
|
||||||
|
temp = *(struct _student *)iter->next(iter);
|
||||||
|
tree->print_obj(&temp);
|
||||||
|
}
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
|
||||||
#if 1
|
|
||||||
printf("----- left priority -----\n");
|
|
||||||
tree->order(tree, false);
|
|
||||||
printf("----- preorder -----\n");
|
printf("----- preorder -----\n");
|
||||||
tree->preorder(tree, tree->_root);
|
iter = tree->iter(tree, ORDER_LEFT_PRE);
|
||||||
|
while(iter->hasnext(iter))
|
||||||
|
{
|
||||||
|
temp = *(struct _student *)iter->next(iter);
|
||||||
|
tree->print_obj(&temp);
|
||||||
|
}
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
|
||||||
for (i = 0; i < len; i++)
|
for (i = 0; i < len; i++)
|
||||||
@ -440,7 +590,13 @@ void demo_rbtree_struct(void)
|
|||||||
tree->delete(tree, &temp);
|
tree->delete(tree, &temp);
|
||||||
|
|
||||||
printf("size = %2d : ", tree->size(tree));
|
printf("size = %2d : ", tree->size(tree));
|
||||||
tree->preorder(tree, tree->_root);
|
|
||||||
|
iter = tree->iter(tree, ORDER_LEFT_PRE);
|
||||||
|
while(iter->hasnext(iter))
|
||||||
|
{
|
||||||
|
temp = *(struct _student *)iter->next(iter);
|
||||||
|
tree->print_obj(&temp);
|
||||||
|
}
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
|
||||||
if(true != tree_rb_check(tree))
|
if(true != tree_rb_check(tree))
|
||||||
@ -454,7 +610,6 @@ void demo_rbtree_struct(void)
|
|||||||
{
|
{
|
||||||
printf("----- empty -----\n");
|
printf("----- empty -----\n");
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
tree_free(&tree);
|
tree_free(&tree);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user