概述
红黑树,记得刚买那本书的时候我就发现有这个东西,觉得很神秘,终于接触到了,并且,我已经写出来了.很高兴.
插入的例程是书上自带的,我给代码实现了.细节部分,我并不是很清楚.删除例程,是自己写的,全下来写了大概15小时,很辛苦.昨天晚上到家就开始写,今天到家也是立刻就开始写,写完了.
我想说的是,关于删除例程, 算法部分的自己构建我很满意,旋转部分的细节实现以及细节,也是自己发现并总结的,而且是对的.很辛苦的过程啊,坚持过来了,哈哈.
并没有模块化删除例程,因为那个函数不容易建立,而且也觉得,这样很方便阅读,很好,哈哈.
还有一些想说的,就不该是这篇博客该说的了.上我的代码吧.
/*RedBlackTree.h -- 红黑树头文件*/
/*仅仅代码,就写了4天.删除例程写了三天.删除例程是自己实现的,够爽.*/
#include
#include
#include
/*明显常量定义*/
#define FALSE (0)
#define TRUE (1)
#define INFINITY (~(1 << 31))
#define NEGATIVE_INFINITY (1 << 31)
/*数据类型定义*/
typedef int BOOL ;
typedef enum colorType {Red, Black} ColorType ;
typedef int Item ;
typedef struct node
{
Item item ;
struct node * left, * right ;
ColorType color ;
} Node ;
typedef struct redBlackTree
{
Node * root ;
int current ;
} * RedBlackTree ;
/*全局变量声明*/
static Node * NullNode = NULL ;
Node * Current, * Sibling, * Parent, * GrParent, * GrGrParent ;
/*接口函数声明*/
/*操作:创建并初始化一棵红黑树并为 NullNode 分配内存空间*/
/*操作前:prbt 指向一棵红黑树*/
/*操作后:如果内存分配成功, 该红黑树被初始化为空, 为 NullNode 分配内存空间, 返回 TRUE ; 否则返回 FALSE*/
/*时间复杂度:O (1)*/
BOOL Create_R (RedBlackTree * const prbt) ;
/*操作:确定一棵红黑树是否为空*/
/*操作前:prbt 指向一棵已初始化的红黑树*/
/*操作后:如果该红黑树为空, 返回 TRUE ; 否则返回 FALSE*/
/*时间复杂度:O (1)*/
BOOL IsEmpty_R (const RedBlackTree * const prbt) ;
/*操作:向红黑树中插入一个结点*/
/*操作前:prbt 指向一棵已初始化的红黑树, item 是待添加数据*/
/*操作后:如果内存分配成功 && item 之前不存在于该红黑树中, 向该红黑树中添加1个数据域为 item 的结点, 返回 TRUE ; 否则返回 FALSE*/
/*时间复杂度:O (log N)*/
BOOL Insert_R (RedBlackTree * const prbt, const Item item) ;
/*操作:从红黑树中删除一个结点*/
/*操作前:prbt 指向一棵已初始化的红黑树, item 是待删除数据*/
/*操作后:如果找到该结点, 删除它, 返回 TRUE ; 否则返回 FALSE*/
/*时间复杂度:O (log N)*/
BOOL Delete_R (RedBlackTree * const prbt, const Item item) ;
/*操作:将一个函数以中序作用于红黑树中所有结点1次*/
/*操作前:prbt 指向一棵已初始化的红黑树, pfun 指向一个没有返回值, 接受一个 Node * 类型参数的函数*/
/*操作后:pfun 指向的函数被以中序依次作用于该红黑树中所有结点1次*/
/*时间复杂度:O (N)*/
void Traversal_R (const RedBlackTree * const prbt, void (* pfun) (const Node * const pn)) ;
/*操作:释放一棵红黑树占用的内存空间*/
/*操作前:prbt 指向一棵已初始化的红黑树*/
/*操作后:该红黑树占用的内存空间被释放*/
/*时间复杂度:O (N)*/
void Release_R (const RedBlackTree * const prbt) ;
最后
以上就是昏睡啤酒为你收集整理的c语言item头文件,红黑树头文件C语言的全部内容,希望文章能够帮你解决c语言item头文件,红黑树头文件C语言所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复