home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The C Users' Group Library 1994 August
/
wc-cdrom-cusersgrouplibrary-1994-08.iso
/
listings
/
v_09_01
/
9n01068a
< prev
next >
Wrap
Text File
|
1990-11-19
|
1KB
|
60 lines
// TREE.HPP - interface definition for in-memory balanced binary trees
#ifndef _TREE_HPP
#define _TREE_HPP
#include <stddef.h>
class TREE
{
private:
struct NODE
{
struct node *left, *right;
unsigned int balance;
size_t dsize; // size of the data area
void *data;
} NODE;
typedef enum tree_err
{
OK,
MEM_ALLOC_FAIL,
NO_DUPES,
TREE_EMPTY,
NO_SUCH_NODE
} TREE_ERR;
NODE *head;
NODE *current;
TREE_ERR errval; // error value produced by last operation
void delete_subtree(NODE *nodeptr);
void rebalance(NODE *parent);
int addnode(NODE *parent, NODE *newnode);
NODE *findnode(NODE *currnode, void *key);
int remove_node(NODE *currnode, void *key);
int getnext(NODE *currnode);
int getprev(NODE *currnode);
protected:
virtual void alloc_data(NODE *nptr);
virtual void copy_data(NODE *to, void *from);
virtual void delete_data(NODE *nptr);
virtual int compare(void *data1, void *data2, size_t size);
public:
TREE(void);
~TREE(void);
add(void *data, size_t size);
remove(void *data);
void *find(void *data);
void *findfirst(void);
void *findnext(void);
void *findlast(void);
void *findprev(void);
void *findcurr(void) {return current->data;}
void print_tree(void);
TREE_ERR last_error(void) {return errval;}
};
#endif // ifndef _TREE_HPP