- stft 本程序是一个用短时傅立叶变换实现的心音时间
- LS(AR) 用LS法估计的AR参数并用Cadzow谱估计子估计出信号的功率谱密度
- paint 模仿windows自带的画图
- raytracing(f2) OpenGL program for raytracing. It is not a completed version yet.
- poi java开发中实现doc文件导入导出所用的的三个jar包
- fymys_v2.5 安装说明 运行环境:php5.1以上+mysql4.0以上 第1步:上传整个源码包到您的空间或服务器(修改相应目录权限) 第2步:在地址栏中输入http://你的域名/install.php(照提示安装
文件名称:AVL树实现
-
所属分类:
- 标签属性:
- 上传时间:2010-04-03
-
文件大小:23.97kb
-
已下载:0次
-
提 供 者:
-
相关连接:无下载说明:别用迅雷下载,失败请重下,重下不扣分!
下载1 (23.97kb)
别用迅雷、360浏览器下载。
如迅雷强制弹出,可右键点击选“另存为”。
失败请重下,重下不扣分。
如迅雷强制弹出,可右键点击选“另存为”。
失败请重下,重下不扣分。
介绍说明--下载内容来自于网络,使用问题请自行百度
纯C实现的AVL树,Demo是MFC的。非递归的遍历,完全支持添加、删除和搜索节点。设计灵活,容易扩展。以下是API
struct tagAvlTree;
typedef struct tagAvlTree AvlTree;
struct tagAvlNode;
typedef struct tagAvlNode AvlNode;
struct tagAvlNode
{
AvlNode *left;
AvlNode *right;
int32_t height;
uint32_t key;
void *user;
bool_t full;
};
#define AVL_MODE_REPLACE 1
#define AVL_MODE_PERFECT 2
#define AVL_ERROR_MEMORY -1
#define AVL_ERROR_CONFLICT -2
struct tagAvlTree
{
void *user;
AvlNode *root;
uint32_t flags;
bool_t (*dtor)(AvlNode *item);
AvlNode* (*ctor)(uint32_t key, void *user);
int32_t (*compare)(void *key1, void *key2);
};
AvlNode* AvlTraversePrior(AvlTree *tree, AvlNode *item, int32_t (*f)(AvlTree *tree, AvlNode *item, void *user), void *user);//先序遍历
AvlNode* AvlTraverseMiddle(AvlTree *tree, AvlNode *item, int32_t (*f)(AvlTree *tree, AvlNode *item, void *user), void *user);//中序遍历
AvlNode* AvlTraversePost(AvlTree *tree, AvlNode *item, int32_t (*f)(AvlTree *tree, AvlNode *item, void *user), void *user);//后序遍历
AvlNode* AvlTraverseReversePrior(AvlTree *tree, AvlNode *item, int32_t (*f)(AvlTree *tree, AvlNode *item, void *user), void *user);//先序遍历,先右后左
AvlNode* AvlTraverseReverseMiddle(AvlTree *tree, AvlNode *item, int32_t (*f)(AvlTree *tree, AvlNode *item, void *user), void *user);//中序遍历,先右后左
AvlNode* AvlTraverseReversePost(AvlTree *tree, AvlNode *item, int32_t (*f)(AvlTree *tree, AvlNode *item, void *user), void *user);//后序遍历,先右后左
AvlNode* AvlTraverseWide(AvlTree *tree, AvlNode *item, int32_t (*f)(AvlTree *tree, AvlNode *item, void *user), void *user);//广度优先遍历
void AvlCreate(AvlTree *tree);
void AvlDestroy(AvlTree *tree);
AvlNode* AvlMin(AvlNode *root);
AvlNode* AvlMax(AvlNode *root);
AvlNode* AvlPrev(AvlTree *tree, AvlNode *item);
AvlNode* AvlNext(AvlTree *tree, AvlNode *item);
uint32_t AvlDepth(AvlTree *tree, AvlNode *item);
AvlNode* AvlParent(AvlTree *tree, AvlNode *item, uint32_t nth);
AvlNode* AvlCheckBanlance(AvlTree *tree, AvlNode *item);
AvlNode* AvlRemove(AvlTree *tree, uint32_t key, bool_t freeit);
AvlNode* AvlInsert(AvlTree *tree, uint32_t key, void *user);
AvlNode* AvlReplace(AvlTree *tree, uint32_t key, void *user);
AvlNode* AvlIndex(AvlTree *tree, int32_t index);
void AvlSetMode(AvlTree *tree, uint32_t mode);
void AvlClearMode(AvlTree *tree, uint32_t mode);
void AvlInvertMode(AvlTree *tree, uint32_t mode);
uint32_t AvlIsInMode(AvlTree *tree, uint32_t mode);
bool_t AvlAdd(AvlTree *tree, AvlNode *item);
bool_t AvlClone(AvlTree *tree, AvlNode *item, AvlTree* copy);
AvlNode* AvlNear(AvlTree *tree, uint32_t key, int32_t (*compare)(void *key1, void *key2)); //按key查找节点或最临近点
AvlNode* AvlSearch(AvlTree *tree, uint32_t key, int32_t (*compare)(void *key1, void *key2)); //按key查找节点
void* AvlLookup(AvlTree *tree, uint32_t key, int32_t (*compare)(void *key1, void *key2)); //按key查找节点,返回数据
struct tagAvlTree;
typedef struct tagAvlTree AvlTree;
struct tagAvlNode;
typedef struct tagAvlNode AvlNode;
struct tagAvlNode
{
AvlNode *left;
AvlNode *right;
int32_t height;
uint32_t key;
void *user;
bool_t full;
};
#define AVL_MODE_REPLACE 1
#define AVL_MODE_PERFECT 2
#define AVL_ERROR_MEMORY -1
#define AVL_ERROR_CONFLICT -2
struct tagAvlTree
{
void *user;
AvlNode *root;
uint32_t flags;
bool_t (*dtor)(AvlNode *item);
AvlNode* (*ctor)(uint32_t key, void *user);
int32_t (*compare)(void *key1, void *key2);
};
AvlNode* AvlTraversePrior(AvlTree *tree, AvlNode *item, int32_t (*f)(AvlTree *tree, AvlNode *item, void *user), void *user);//先序遍历
AvlNode* AvlTraverseMiddle(AvlTree *tree, AvlNode *item, int32_t (*f)(AvlTree *tree, AvlNode *item, void *user), void *user);//中序遍历
AvlNode* AvlTraversePost(AvlTree *tree, AvlNode *item, int32_t (*f)(AvlTree *tree, AvlNode *item, void *user), void *user);//后序遍历
AvlNode* AvlTraverseReversePrior(AvlTree *tree, AvlNode *item, int32_t (*f)(AvlTree *tree, AvlNode *item, void *user), void *user);//先序遍历,先右后左
AvlNode* AvlTraverseReverseMiddle(AvlTree *tree, AvlNode *item, int32_t (*f)(AvlTree *tree, AvlNode *item, void *user), void *user);//中序遍历,先右后左
AvlNode* AvlTraverseReversePost(AvlTree *tree, AvlNode *item, int32_t (*f)(AvlTree *tree, AvlNode *item, void *user), void *user);//后序遍历,先右后左
AvlNode* AvlTraverseWide(AvlTree *tree, AvlNode *item, int32_t (*f)(AvlTree *tree, AvlNode *item, void *user), void *user);//广度优先遍历
void AvlCreate(AvlTree *tree);
void AvlDestroy(AvlTree *tree);
AvlNode* AvlMin(AvlNode *root);
AvlNode* AvlMax(AvlNode *root);
AvlNode* AvlPrev(AvlTree *tree, AvlNode *item);
AvlNode* AvlNext(AvlTree *tree, AvlNode *item);
uint32_t AvlDepth(AvlTree *tree, AvlNode *item);
AvlNode* AvlParent(AvlTree *tree, AvlNode *item, uint32_t nth);
AvlNode* AvlCheckBanlance(AvlTree *tree, AvlNode *item);
AvlNode* AvlRemove(AvlTree *tree, uint32_t key, bool_t freeit);
AvlNode* AvlInsert(AvlTree *tree, uint32_t key, void *user);
AvlNode* AvlReplace(AvlTree *tree, uint32_t key, void *user);
AvlNode* AvlIndex(AvlTree *tree, int32_t index);
void AvlSetMode(AvlTree *tree, uint32_t mode);
void AvlClearMode(AvlTree *tree, uint32_t mode);
void AvlInvertMode(AvlTree *tree, uint32_t mode);
uint32_t AvlIsInMode(AvlTree *tree, uint32_t mode);
bool_t AvlAdd(AvlTree *tree, AvlNode *item);
bool_t AvlClone(AvlTree *tree, AvlNode *item, AvlTree* copy);
AvlNode* AvlNear(AvlTree *tree, uint32_t key, int32_t (*compare)(void *key1, void *key2)); //按key查找节点或最临近点
AvlNode* AvlSearch(AvlTree *tree, uint32_t key, int32_t (*compare)(void *key1, void *key2)); //按key查找节点
void* AvlLookup(AvlTree *tree, uint32_t key, int32_t (*compare)(void *key1, void *key2)); //按key查找节点,返回数据
相关搜索: AVL 二叉平衡树
(系统自动生成,下载前可以参看下载内容)
下载文件列表
压缩包 : AvlTree.rar 列表 avl.h AvlTree.h AvlTreeDoc.h AvlTreeView.h MainFrm.h Resource.h StdAfx.h stdint.h avl.c avl.cpp AvlTree.cpp AvlTreeDoc.cpp AvlTreeView.cpp MainFrm.cpp StdAfx.cpp AvlTree.exe res/Toolbar.bmp AvlTree.clw AvlTree.dsp AvlTree.dsw res/AvlTree.ico res/AvlTreeDoc.ico AvlTree.rc res/AvlTree.rc2 res
1999-2046 搜珍网 All Rights Reserved.
本站作为网络服务提供者,仅为网络服务对象提供信息存储空间,仅对用户上载内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
