aboutsummaryrefslogtreecommitdiff
path: root/src/red-black-tree.c
diff options
context:
space:
mode:
authorThomas Schmucker <ts@its1.de>2024-09-06 21:10:21 +0200
committerThomas Schmucker <ts@its1.de>2024-09-06 21:10:21 +0200
commit9e8caf1e06ba7510160305da11a30d91dcfc23e5 (patch)
tree30da0c941191d0907abe829feb1bf75f0fca4b3a /src/red-black-tree.c
parent4ecdad9462c4447c1370cf1dd1341b2289c28566 (diff)
downloaddata-structures-9e8caf1e06ba7510160305da11a30d91dcfc23e5.tar.gz
data-structures-9e8caf1e06ba7510160305da11a30d91dcfc23e5.tar.bz2
data-structures-9e8caf1e06ba7510160305da11a30d91dcfc23e5.zip
reformat source code
Diffstat (limited to 'src/red-black-tree.c')
-rw-r--r--src/red-black-tree.c32
1 files changed, 15 insertions, 17 deletions
diff --git a/src/red-black-tree.c b/src/red-black-tree.c
index 7c2d2c1..5ae0f31 100644
--- a/src/red-black-tree.c
+++ b/src/red-black-tree.c
@@ -6,8 +6,6 @@
6#include <stdlib.h> 6#include <stdlib.h>
7#include <time.h> 7#include <time.h>
8 8
9#include "util.h"
10
11/* The authors of this work have released all rights to it and placed it 9/* The authors of this work have released all rights to it and placed it
12in the public domain under the Creative Commons CC0 1.0 waiver 10in the public domain under the Creative Commons CC0 1.0 waiver
13(http://creativecommons.org/publicdomain/zero/1.0/). 11(http://creativecommons.org/publicdomain/zero/1.0/).
@@ -27,22 +25,22 @@ enum rbtree_node_color { RED,
27 BLACK }; 25 BLACK };
28 26
29typedef struct rbtree_node_t { 27typedef struct rbtree_node_t {
30 void * key; 28 void *key;
31 void * value; 29 void *value;
32 struct rbtree_node_t * left; 30 struct rbtree_node_t *left;
33 struct rbtree_node_t * right; 31 struct rbtree_node_t *right;
34 struct rbtree_node_t * parent; 32 struct rbtree_node_t *parent;
35 enum rbtree_node_color color; 33 enum rbtree_node_color color;
36} * rbtree_node; 34} *rbtree_node;
37 35
38typedef struct rbtree_t { 36typedef struct rbtree_t {
39 rbtree_node root; 37 rbtree_node root;
40} * rbtree; 38} *rbtree;
41 39
42typedef int (*compare_func)(void *left, void *right); 40typedef int (*compare_func)(void *left, void *right);
43 41
44rbtree rbtree_create(); 42rbtree rbtree_create(void);
45void * rbtree_lookup(rbtree t, void *key, compare_func compare); 43void *rbtree_lookup(rbtree t, void *key, compare_func compare);
46void rbtree_insert(rbtree t, void *key, void *value, compare_func compare); 44void rbtree_insert(rbtree t, void *key, void *value, compare_func compare);
47void rbtree_delete(rbtree t, void *key, compare_func compare); 45void rbtree_delete(rbtree t, void *key, compare_func compare);
48 46
@@ -187,7 +185,7 @@ verify_property_5_helper(node n, int black_count, int *path_black_count)
187} 185}
188 186
189rbtree 187rbtree
190rbtree_create() 188rbtree_create(void)
191{ 189{
192 rbtree t = malloc(sizeof *t); 190 rbtree t = malloc(sizeof *t);
193 t->root = NULL; 191 t->root = NULL;
@@ -538,8 +536,8 @@ static void print_tree_helper(rbtree_node n, int indent);
538int 536int
539compare_int(void *leftp, void *rightp) 537compare_int(void *leftp, void *rightp)
540{ 538{
541 int left = (int) leftp; 539 long left = (long) leftp;
542 int right = (int) rightp; 540 long right = (long) rightp;
543 if ( left < right ) 541 if ( left < right )
544 return -1; 542 return -1;
545 else if ( left > right ) 543 else if ( left > right )
@@ -575,16 +573,16 @@ print_tree_helper(rbtree_node n, int indent)
575 for ( i = 0; i < indent; i++ ) 573 for ( i = 0; i < indent; i++ )
576 fputs(" ", stdout); 574 fputs(" ", stdout);
577 if ( n->color == BLACK ) 575 if ( n->color == BLACK )
578 printf("%d\n", (int) n->key); 576 printf("%ld\n", (long) n->key);
579 else 577 else
580 printf("<%d>\n", (int) n->key); 578 printf("<%ld>\n", (long) n->key);
581 if ( n->left != NULL ) { 579 if ( n->left != NULL ) {
582 print_tree_helper(n->left, indent + INDENT_STEP); 580 print_tree_helper(n->left, indent + INDENT_STEP);
583 } 581 }
584} 582}
585 583
586int 584int
587main() 585main(void)
588{ 586{
589 int i; 587 int i;
590 rbtree t = rbtree_create(); 588 rbtree t = rbtree_create();