AVL tree for integers.
FossilOrigin-Name: b926f87dd33cb30a70707ab86240f429c60a12d635e650bc1ab0d0702de075ca
This commit is contained in:
parent
7845fcd781
commit
c0985357a1
35
src/capwap/intavltree.c
Normal file
35
src/capwap/intavltree.c
Normal file
@ -0,0 +1,35 @@
|
||||
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "intavltree.h"
|
||||
|
||||
|
||||
static int cmp(const void *v1,const void*v2)
|
||||
{
|
||||
return *((int*)v1) - *((char*)v2);
|
||||
}
|
||||
|
||||
static void del(void* d)
|
||||
{
|
||||
free (d);
|
||||
return;
|
||||
}
|
||||
|
||||
struct avltree * intavltree_create()
|
||||
{
|
||||
return avltree_create(cmp,del);
|
||||
}
|
||||
|
||||
int * intavltree_add(struct avltree * t, int val)
|
||||
{
|
||||
int *v = avltree_get(t,&val);
|
||||
if (v)
|
||||
return v;
|
||||
|
||||
v = malloc(sizeof(int));
|
||||
if (!v)
|
||||
return NULL;
|
||||
*v=val;
|
||||
return avltree_add(t,v);
|
||||
}
|
14
src/capwap/intavltree.h
Normal file
14
src/capwap/intavltree.h
Normal file
@ -0,0 +1,14 @@
|
||||
#ifndef __INTAVLTREE_H
|
||||
#define __INTAVLTREE_H
|
||||
|
||||
#include "avltree.h"
|
||||
|
||||
extern struct avltree * intavltree_create();
|
||||
int * intavltree_add(struct avltree * t, int val);
|
||||
|
||||
#define intavltree_destroy(t) avltree_destroy(t)
|
||||
#define intavltree_foreach_asc(t,f,p) avltree_foreach_asc(t,f,p)
|
||||
#define intavltree_foreach_desc(t,f,p) avltree_foreach_desc(t,f,p)
|
||||
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue
Block a user