home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Club Amiga de Montreal - CAM
/
CAM_CD_1.iso
/
files
/
446.lha
/
avlsort
/
avl.h
< prev
next >
Wrap
C/C++ Source or Header
|
1990-12-02
|
3KB
|
89 lines
/* avl.h Definitions for avl routines
Copyright 1988 Zinn Computer Company
by Mark E. Mallett
All Rights Reserved
This software may be used at will, provided that all credits
and style be left in place, and that its distribution is not
restricted. Bug fixes and improvements are welcomed, please
send these back to me at mem@zinn.MV.COM
*/
#ifndef H_AVL /* Prevent multiple inclusions */
#define H_AVL
/*--------------------------------------------------------------
* rlp900624 -- Support for Lattice-style prototypes
* If MSDOS, I assume Microsoft C compiler for DOS and OS/2
* If Lattice, I assume Lattice C compiler for Amiga
*--------------------------------------------------------------
*/
#ifndef __ARGS
#if defined(MSDOS) || defined(LATTICE)
#define __ARGS(a) a
#else
#define __ARGS(a) ()
#endif
#endif
#ifndef TRUE /* Same old jazz */
#define TRUE 1
#define FALSE 0
#endif TRUE
#ifndef NULL
#define NULL ((char *)0)
#endif NULL
#ifndef NUL
#define NUL '\0'
#endif NUL
/*-------------------------------------------
* rlp900624 -- added typedefs and prototypes
*-------------------------------------------
*/
typedef struct _AVLNODE AVLNODE;
typedef struct _AVLTREE AVLTREE;
typedef int (*PFNCMPRTC) __ARGS((void *, AVLNODE *));
typedef AVLNODE *(*PFNMKNODE) __ARGS((AVLTREE *, void *, void *, AVLNODE *));
typedef int (*PFNRMNODE) __ARGS((AVLTREE *, AVLNODE *));
AVLNODE *avlfind __ARGS(( AVLTREE *treeP, void *keyP ));
int avlinsert __ARGS(( AVLTREE *treeP, void *keyP, void *dataP ));
int avldelete __ARGS(( AVLTREE *treeP, void *keyP ));
/* Structures */
/* Structure of an avl tree node. Note that this node is meant to
be used as a header or component of an application-specific structure,
since there is no key or data information present in the avlnode
structure.
*/
typedef /* A node in an AVL tree */
struct _AVLNODE {
AVLNODE *n_leftP; /* Ptr to left subtree */
AVLNODE *n_rightP; /* Ptr to right subtree */
int n_balance; /* Balance count */
} AVLNODE;
typedef /* The header for an AVL tree */
struct _AVLTREE {
/* Tree parameters */
AVLNODE *t_rootP; /* Ptr to root node */
/* Handler functions for the tree */
/* rlp900622 -- use my typedefs for these function ptrs */
PFNCMPRTC t_cmprtc; /* int (*t_cmprtc)(); Compare two keys */
PFNMKNODE t_mknode; /* AVLNODE *(*t_mknode)(); Node maker */
PFNRMNODE t_rmnode; /* int (*t_rmnode)(); Node destroyer */
} AVLTREE;
#endif H_AVL;