Rev 3149 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3149 | Rev 3191 | ||
---|---|---|---|
Line 46... | Line 46... | ||
46 | */ |
46 | */ |
47 | static avltree_node_t *first_free_node = NULL; |
47 | static avltree_node_t *first_free_node = NULL; |
48 | 48 | ||
49 | static int test_tree_balance(avltree_node_t *node); |
49 | static int test_tree_balance(avltree_node_t *node); |
50 | static avltree_node_t *test_tree_parents(avltree_node_t *node); |
50 | static avltree_node_t *test_tree_parents(avltree_node_t *node); |
51 | static void print_tree_structure_flat (avltree_node_t *node, int level); |
51 | static void print_tree_structure_flat (avltree_node_t *node, int level) |
- | 52 | __attribute__ ((used)); |
|
52 | static avltree_node_t *alloc_avltree_node(void); |
53 | static avltree_node_t *alloc_avltree_node(void); |
53 | 54 | ||
54 | static avltree_node_t *test_tree_parents(avltree_node_t *node) |
55 | static avltree_node_t *test_tree_parents(avltree_node_t *node) |
55 | { |
56 | { |
56 | avltree_node_t *tmp; |
57 | avltree_node_t *tmp; |
Line 59... | Line 60... | ||
59 | return NULL; |
60 | return NULL; |
60 | 61 | ||
61 | if (node->lft) { |
62 | if (node->lft) { |
62 | tmp = test_tree_parents(node->lft); |
63 | tmp = test_tree_parents(node->lft); |
63 | if (tmp != node) { |
64 | if (tmp != node) { |
64 | printf("Bad parent pointer key: %" PRIu64 ", address: %p\n", |
65 | printf("Bad parent pointer key: %" PRIu64 |
65 | tmp->key, node->lft); |
66 | ", address: %p\n", tmp->key, node->lft); |
66 | } |
67 | } |
67 | } |
68 | } |
68 | if (node->rgt) { |
69 | if (node->rgt) { |
69 | tmp = test_tree_parents(node->rgt); |
70 | tmp = test_tree_parents(node->rgt); |
70 | if (tmp != node) { |
71 | if (tmp != node) { |
71 | printf("Bad parent pointer key: %" PRIu64 ", address: %p\n", |
72 | printf("Bad parent pointer key: %" PRIu64 |
- | 73 | ", address: %p\n", |
|
72 | tmp->key,node->rgt); |
74 | tmp->key,node->rgt); |
73 | } |
75 | } |
74 | } |
76 | } |
75 | return node->par; |
77 | return node->par; |
76 | } |
78 | } |
Line 92... | Line 94... | ||
92 | 94 | ||
93 | /** |
95 | /** |
94 | * Prints the structure of the node, which is level levels from the top of the |
96 | * Prints the structure of the node, which is level levels from the top of the |
95 | * tree. |
97 | * tree. |
96 | */ |
98 | */ |
- | 99 | static void |
|
97 | static void print_tree_structure_flat(avltree_node_t *node, int level) |
100 | print_tree_structure_flat(avltree_node_t *node, int level) |
98 | { |
101 | { |
99 | /* |
102 | /* |
100 | * You can set the maximum level as high as you like. |
103 | * You can set the maximum level as high as you like. |
101 | * Most of the time, you'll want to debug code using small trees, |
104 | * Most of the time, you'll want to debug code using small trees, |
102 | * so that a large level indicates a loop, which is a bug. |
105 | * so that a large level indicates a loop, which is a bug. |
Line 128... | Line 131... | ||
128 | int i; |
131 | int i; |
129 | 132 | ||
130 | for (i = 0; i < NODE_COUNT - 1; i++) { |
133 | for (i = 0; i < NODE_COUNT - 1; i++) { |
131 | avltree_nodes[i].par = &avltree_nodes[i + 1]; |
134 | avltree_nodes[i].par = &avltree_nodes[i + 1]; |
132 | } |
135 | } |
- | 136 | avltree_nodes[i].par = NULL; |
|
133 | 137 | ||
134 | /* |
138 | /* |
135 | * Node keys which will be used for insertion. Up to NODE_COUNT size of |
139 | * Node keys which will be used for insertion. Up to NODE_COUNT size of |
136 | * array. |
140 | * array. |
137 | */ |
141 | */ |
Line 167... | Line 171... | ||
167 | avltree_nodes[20].key = 300; |
171 | avltree_nodes[20].key = 300; |
168 | 172 | ||
169 | for (i = 21; i < NODE_COUNT; i++) |
173 | for (i = 21; i < NODE_COUNT; i++) |
170 | avltree_nodes[i].key = i * 3; |
174 | avltree_nodes[i].key = i * 3; |
171 | 175 | ||
172 | avltree_nodes[i].par = NULL; |
- | |
173 | first_free_node = &avltree_nodes[0]; |
176 | first_free_node = &avltree_nodes[0]; |
174 | } |
177 | } |
175 | 178 | ||
176 | static avltree_node_t *alloc_avltree_node(void) |
179 | static avltree_node_t *alloc_avltree_node(void) |
177 | { |
180 | { |