aboutsummaryrefslogtreecommitdiff
path: root/collections/map/map.c
diff options
context:
space:
mode:
Diffstat (limited to 'collections/map/map.c')
-rw-r--r--collections/map/map.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/collections/map/map.c b/collections/map/map.c
index 83a446d..7de58e4 100644
--- a/collections/map/map.c
+++ b/collections/map/map.c
@@ -82,6 +82,29 @@ void *key, *val;
return 0;
}
+void* map_reset_key(root, key)
+map *root;
+void *key;
+{
+ void *tmp;
+ int cmp;
+
+ if (!root || !key)
+ return NULL;
+
+ cmp = root->cmp(root->key, key);
+
+ if (cmp < 0)
+ return map_reset_key(root->left, key);
+
+ if (cmp > 0)
+ return map_reset_key(root->right, key);
+
+ tmp = root->key;
+ root->key = key;
+ return tmp;
+}
+
void map_clear(root)
map *root;
{