aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcathook <cat.hook31894@gmail.com>2013-12-17 03:41:02 +0800
committercathook <cat.hook31894@gmail.com>2013-12-17 03:41:02 +0800
commitfbfeea083797df629a314e447b173b5ee6f00d78 (patch)
treefbea9388ca20d7f23025dfd8e312411dc59a169b
parent1453386379c010d95783731fbb73152e4f2d5f6b (diff)
downloadctl-fbfeea083797df629a314e447b173b5ee6f00d78.tar.gz
ctl-fbfeea083797df629a314e447b173b5ee6f00d78.tar.zst
ctl-fbfeea083797df629a314e447b173b5ee6f00d78.zip
can compile
-rw-r--r--src/sptree.c40
1 files changed, 20 insertions, 20 deletions
diff --git a/src/sptree.c b/src/sptree.c
index 9401bd4..5635c82 100644
--- a/src/sptree.c
+++ b/src/sptree.c
@@ -1,4 +1,5 @@
#include "sptree.h"
+#include "utility.h"
#include <string.h>
@@ -11,7 +12,7 @@ struct StructSplayTree{
struct StructSplayTreeNode* root;
key_cmp func;
};
-struct StructSpalyTreeNode{
+struct StructSplayTreeNode{
struct StructSplayTreeNode* lchd;
struct StructSplayTreeNode* rchd;
struct StructSplayTreeNode* fath;
@@ -19,19 +20,19 @@ struct StructSpalyTreeNode{
pvoid* val;
};
-typedef struct StructSpalyTree SplayTree;
-typedef struct StructSpalyTreeNode SplayTreeNode;
+typedef struct StructSplayTree SplayTree;
+typedef struct StructSplayTreeNode SplayTreeNode;
/******************* static functions *********************/
-static void delete_dfs(SplayTreeNode* nd);
+static void delete_dfs(SplayTreeNode* nd);
static SplayTreeNode* access_node(key_cmp f, SplayTreeNode* nd, pcvoid k);
-static SplayTreeNode* split_node(key_cmp f, SplayTreeNode* nd, pcvoid k,
- SplayTreeNode** l, SplayTreeNode** r);
+static SplayTreeNode* split_node (key_cmp f, SplayTreeNode* nd, pcvoid k,
+ SplayTreeNode** l, SplayTreeNode** r);
static SplayTreeNode* access_max(SplayTreeNode *nd);
-static SplayTreeNode* merge_node(key_cmp f, SplayTreeNode* l, SplayTreeNode* r);
+static SplayTreeNode* merge_node(SplayTreeNode* l, SplayTreeNode* r);
#define getHeader(A) ((SplayTree*)(A))
-#define getSize(A) (sizeof(StructSplayTreeNode)+(A)->key_size+(A)->val_size)
+#define getSize(A) (sizeof(SplayTreeNode)+(A)->key_size+(A)->val_size)
#define connectL(A,B) \
do{\
if((A) != NULL) (A)->lchd = (B);\
@@ -65,7 +66,7 @@ pvoid ctl_sptree_initX(ppvoid sp, uint k_size, uint v_size, key_cmp f){
pvoid ctl_sptree_freeX(ppvoid sp){
SplayTree* head = (SplayTree*)*sp;
if(head->root != NULL) delete_dfs(head->root);
- free(head);
+ ctl_free(pVoid(head));
*sp = NULL;
return NULL;
}
@@ -84,7 +85,7 @@ uint ctl_sptree_getValSizeX(ppcvoid sp){
/******************* splay tree's methods *****************/
pvoid ctl_sptree_findX(ppvoid sp, pcvoid key){
SplayTree* head = getHeader(*sp);
- SplayTreeNode* nd = access_node(head->root, key, head->func);
+ SplayTreeNode* nd = access_node(head->func, head->root, key);
if(head->root != NULL)
while(head->root->fath != NULL)
head->root = head->root->fath;
@@ -94,8 +95,8 @@ pvoid ctl_sptree_findX(ppvoid sp, pcvoid key){
pvoid ctl_sptree_addX(ppvoid sp, pcvoid key, pvoid val){
SplayTree* head = getHeader(*sp);
SplayTreeNode* lft;
- SplayTreeNode* rgt;
- SplayTreeNode* mid = split_node(head->f, head->root, key, &lft, &rgh);
+ SplayTreeNode* rgh;
+ SplayTreeNode* mid = split_node(head->func, head->root, key, &lft, &rgh);
if(mid != NULL){
memcpy(mid->val, val, head->val_size);
head->root = merge_node(lft, rgh);
@@ -114,7 +115,7 @@ void ctl_sptree_delX(ppvoid sp, pcvoid key){
SplayTree* head = getHeader(*sp);
SplayTreeNode* left;
SplayTreeNode* righ;
- access_node(head->func, head, key);
+ access_node(head->func, head->root, key);
if(head->root != NULL)
while(head->root->fath != NULL)
head->root = head->root->fath;
@@ -122,7 +123,7 @@ void ctl_sptree_delX(ppvoid sp, pcvoid key){
righ = head->root->rchd;
disconnL(head->root);
disconnR(head->root);
- free(head->root);
+ ctl_free(pVoid(head->root));
head->root = merge_node(left, righ);
}
@@ -132,7 +133,7 @@ void ctl_sptree_splitX(ppvoid sp , pcvoid key, ppvoid l, ppvoid r){
ctl_sptree_initX(r, head->key_size, head->val_size, head->func);
SplayTreeNode* left;
SplayTreeNode* righ;
- split_node(head->f, head->root, key, &left, &righ);
+ split_node(head->func, head->root, key, &left, &righ);
getHeader(*r)->root = left;
getHeader(*l)->root = righ;
head->root = NULL;
@@ -145,10 +146,10 @@ pvoid ctl_sptree_mergeX(ppvoid sp1, ppvoid sp2){
head2->root = NULL;
ctl_sptree_freeX(sp2);
*sp1 = NULL;
- return pVoid(head);
+ return pVoid(head1);
}
-void ctl_sptree_clearX(ppvoid* sp){
+void ctl_sptree_clearX(ppvoid sp){
if(getHeader(*sp)->root != NULL)
delete_dfs(getHeader(*sp)->root);
getHeader(*sp)->root = NULL;
@@ -159,7 +160,7 @@ void ctl_sptree_clearX(ppvoid* sp){
static void delete_dfs(SplayTreeNode* nd){
if(nd->lchd != NULL) delete_dfs(nd->lchd);
if(nd->rchd != NULL) delete_dfs(nd->rchd);
- free(nd);
+ ctl_free(pVoid(nd));
}
static SplayTreeNode* access_node(key_cmp f, SplayTreeNode* nd, pcvoid k){
if(nd == NULL) return NULL;
@@ -231,8 +232,7 @@ static SplayTreeNode* access_max(SplayTreeNode *nd){
return nd;
}
}
-static SplayTreeNode* merge_node(key_cmp f,
- SplayTreeNode* l, SplayTreeNode* r){
+static SplayTreeNode* merge_node(SplayTreeNode* l, SplayTreeNode* r){
l = access_max(l);
if(l == NULL) return r;
connectR(l, r);